что с DISTINCT было бы удобнее суммировать. а не вот так как-то через 2 подзапроса:
(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
VS
-- sum( DISTINCT order_cost ) OVER ( PARTITION BY invoice_id, group_id ORDER BY group_id RANGE unbound preceeding and unbound following )
https://dbfiddle.uk/?rdbms=postgres_12&fiddle=6e6dddf8125164c1adf14f04e832c370
а чем вам ваш же запрос не устроил? без distinct select *, sum( qty*price ) OVER( PARTITION BY invoice_id, group_id ) AS order_cost, round( qty * price, 2 ), sum( round( qty * price, 2 )) OVER( PARTITION BY invoice_id ) AS total_cost from invoice; ????
Вот же по ссылке видно, что округление сразу - даёт 44 копейки, а мне нужно 45. поэтому я и делаю 2 дополнительных подзапроса.
А я, например, про то, что ожидаемое Вами поведение с т.з. обычного поведения оконных функций — нелогично, IMNSHO. Кстати, что это за схема такая, где подобное вообще нужно? Вот в показанном примере — какой Primary Key у таблицы?
Обсуждают сегодня