Можно ли набрать c сумму с помощью оконной функции? - PullRequest
0 голосов
/ 18 апреля 2020

Я могу найти всего через запрос:

with sub_total as (
select 
 *,
 sum( qty*price ) OVER( PARTITION BY invoice_id, group_id )      AS order_cost
from invoice
)

-- Here how I get is expected result:
select *,
  (SELECT sum(x) from (SELECT sum( DISTINCT order_cost ) AS x FROM sub_total sub_i GROUP BY invoice_id, group_id) t) as total_cost
from sub_total;

Можно ли найти sum из этих четырех чисел с помощью оконной функции?

enter image description here

Полагаю, это должно работать, но, к сожалению, нет:

sum( DISTINCT order_cost ) OVER ( PARTITION BY invoice_id, group_id ORDER BY group_id RANGE unbound preceeding and unbound following )

Вот скрипка

1 Ответ

0 голосов
/ 18 апреля 2020

Если я понял проблему, вам нужен столбец с общим значением.

SELECT *,
      qty*price,
      SUM(qty*price) OVER (),
      SUM(qty*price) OVER (PARTITION BY invoice_id ORDER BY group_id)
 FROM invoice

, который выведет это:

enter image description here

...