Объединить группу по и функцию окна - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь объединить оконную функцию с группой для следующей функции. Учитывая следующую таблицу:

Table a
ID1   ID2   Value1   Value2
1     1     2        2
1     1     3        2
1     1     2        4
1     2     1        2

Здесь я сначала хочу вычислить значение3, которое является суммой (значение2) * сумма (значение2) для каждой комбинации ID1 и ID2, следующим образом:

Table a
ID1   ID2   Value1   Value2    Value3
1     1     2        2         64
1     1     3        2         64
1     1     2        4         64
1     2     1        2         4

, а затем сгруппировать по ID1 для расчета суммы результата (значение1 * значение3), например,

Result
ID1       Result
1         452

Я начал пытаться реализовать этот запрос здесь (http://sqlfiddle.com/#!9/9da0cf/6), но не смог найти правильное решение.

Возможно ли как-то вычислить это в одном запросе без подзапроса?

1 Ответ

0 голосов
/ 02 мая 2018

Это должно делать то, что вы хотите:

select id1, sum(val1 * val3)
from (select t.*,
             sum(val2) over (partition by id1, id2) * sum(val2) over (partition by id1, id2) as val3
      from t
     ) t
group by id1;

Примечание: вы можете использовать power() вместо умножения "self".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...