WindowAgg¶
名称¶
窗口聚合算子
介绍¶
WindowAgg算子用于处理窗口函数,窗口函数是在满足某种条件的一系列数据(元组)上执行的特殊函数。
GROUP BY子句可对数据进行分组,但无法投影非分组属性而在实际的使用中会需要投影非分组属性,可使用WindowAgg算子
举例¶
--清理环境
DROP TABLE t1;
--创建环境
CREATE TABLE t1(class_id int, gender text,num int);
INSERT INTO t1 VALUES(1,'male',20);
INSERT INTO t1 VALUES(1,'female',16);
INSERT INTO t1 VALUES(2,'male',17);
INSERT INTO t1 VALUES(2,'female',18);
EXPLAIN ANALYZE SELECT class_id,gender,num,cast(num as float)/SUM(num) OVER (PARTITION BY class_id) as pct FROM t1;
QUERY PLAN
------------------------------------------------------------------------------------------------------------
WindowAgg (cost=622.40..847.68 rows=8192 width=40) (actual time=0.39..0.50 rows=4 loops=1)
-> Sort (cost=622.40..642.88 rows=8192 width=40) (actual time=0.27..0.27 rows=4 loops=1)
Sort Key: CLASS_ID
-> Seq Scan on T1 (cost=0.00..89.92 rows=8192 width=40) (actual time=0.09..0.15 rows=4 loops=1)
Planning Time: 0.33 msec
Execution Time: 0.43 msec
(6 rows)