Slide 50
Slide 50 text
Window関数の強化
demo=# WITH t(id, value) AS (VALUES (1, 1), (2, 1), (3, 3), (4, 5), (5, 5), (6, 5), (7, 6))
SELECT
id, value,
array_agg(id) OVER ROWS as row_id,
array_agg(value) OVER ROWS as row_value,
array_agg(id) OVER RANGE as renge_id,
array_agg(value) OVER RANGE as renge_value,
array_agg(id) OVER GROUPS as groups_id,
array_agg(value) OVER GROUPS as groups_value
FROM t WINDOW obj AS (ORDER BY value),
ROWS AS (obj ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING),
RANGE AS (obj RANGE BETWEEN 1 PRECEDING AND 1 FOLLOWING),
GROUPS AS (obj GROUPS BETWEEN 1 PRECEDING AND 1 FOLLOWING);
id | value | row_id | row_value | renge_id | renge_value | groups_id | groups_value
----+-------+---------+-----------+-----------+-------------+---------------+---------------
1 | 1 | {1,2} | {1,1} | {1,2} | {1,1} | {1,2,3} | {1,1,3}
2 | 1 | {1,2,3} | {1,1,3} | {1,2} | {1,1} | {1,2,3} | {1,1,3}
3 | 3 | {2,3,4} | {1,3,5} | {3} | {3} | {1,2,3,4,5,6} | {1,1,3,5,5,5}
4 | 5 | {3,4,5} | {3,5,5} | {4,5,6,7} | {5,5,5,6} | {3,4,5,6,7} | {3,5,5,5,6}
5 | 5 | {4,5,6} | {5,5,5} | {4,5,6,7} | {5,5,5,6} | {3,4,5,6,7} | {3,5,5,5,6}
6 | 5 | {5,6,7} | {5,5,6} | {4,5,6,7} | {5,5,5,6} | {3,4,5,6,7} | {3,5,5,5,6}
7 | 6 | {6,7} | {5,6} | {4,5,6,7} | {5,5,5,6} | {4,5,6,7} | {5,5,5,6}
(7 rows)