Filtering by window function result in Postgresql Filtering by window function result in Postgresql postgresql postgresql

Filtering by window function result in Postgresql


I don't know if this qualifies as "more elegant" but it is written in a different manner than Cybernate's solution (although it is essentially the same)

WITH window_table AS (    SELECT s.*,           sum(volume) OVER previous_rows as total   FROM stuff s   WINDOW previous_rows as         (ORDER BY priority desc ROWS between UNBOUNDED PRECEDING and CURRENT ROW)) SELECT * FROM window_tableWHERE total < 1000ORDER BY priority DESC 

If by "more elegant" you mean something that avoids the sub-select, then the answer is "no"


I haven't worked with PostgreSQL. However, my best guess would be using an inline view.

SELECT a.*FROM (    SELECT s.*, sum(volume) OVER previous_rows AS total    FROM stuff AS s    WINDOW previous_rows AS (         ORDER BY priority desc         ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW    )    ORDER BY priority DESC) AS aWHERE a.total < 1000;