Вернуть рабочий столбец max из другого столбца SQL - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть запрос, в котором я хотел бы манипулировать столбцом, чтобы вернуть массив, содержащий только максимальное значение из последних 12 значений из другого столбца (из-за других частей запроса).

Пример: Я хочу добавить столбец MaxLast12 из:

Month Power 
1     10
2     16
3     8
4     14
5     15
6     3
7     6
8     10
9     11
10    12
11    12
12    12
13    18
14    12

To become:
Month Power MaxLast12
1     10    10
2     16    16
3     8     16
4     14    16
5     15    16
6     3     16
7     6     16
8     17    17
9     11    17
10    12    17
11    12    17
12    12    17
13    18    18
14    12    18

Это также помогло бы создать более простое решение, в котором я включил бы только 12 строк в запрос (не будет таким точным, но хорошимдостаточно для цели) только с максимальным значением.Нужно сделать следующее:

Month Power 
1     6
2     6
3     8
4     14
5     15
6     3
7     6
8     10
9     11
10    12
11    12
12    12

To become:
Month Power YearMax
1     10    17
2     16    17
3     8     17
4     14    17
5     15    17
6     3     17
7     6     17
8     17    17
9     11    17
10    12    17
11    12    17
12    12    17

Так как я предполагаю, что решение обеих проблем будет одинаковым, любая возможная помощь будет оценена.Я хотел бы избежать использования предложения GROUP BY, поскольку я изменяю существующий вид сложного запроса.

Попытка добиться этого с помощью max () безуспешно.

Я использую SQL-разработчик.

1 Ответ

0 голосов
/ 21 ноября 2018

В Oracle вы бы использовали оконные функции:

select month, power,
       max(power) over (order by month rows between 11 preceding and current row)
from t;
...