分析函数与聚合函数
与聚合函数一样,分析函数返回聚合结果,但分析函数不会对结果集进行分组。不过,它们会为每个记录多次返回组值,从而实现进一步分析。
通常,分析查询比聚合查询的运行速度更快,占用的资源更少。
示例
以下示例比较了
COUNT
聚合函数和其对应的分析函数
COUNT
。这些示例使用如下方所定义的 employees
表:
CREATE TABLE employees(emp_no INT, dept_no INT);
INSERT INTO employees VALUES(1, 10);
INSERT INTO employees VALUES(2, 30);
INSERT INTO employees VALUES(3, 30);
INSERT INTO employees VALUES(4, 10);
INSERT INTO employees VALUES(5, 30);
INSERT INTO employees VALUES(6, 20);
INSERT INTO employees VALUES(7, 20);
INSERT INTO employees VALUES(8, 20);
INSERT INTO employees VALUES(9, 20);
INSERT INTO employees VALUES(10, 20);
INSERT INTO employees VALUES(11, 20);
COMMIT;
查询此表时将返回以下结果集:
=> SELECT * FROM employees ORDER BY emp_no;
emp_no | dept_no
--------+---------
1 | 10
2 | 30
3 | 30
4 | 10
5 | 30
6 | 20
7 | 20
8 | 20
9 | 20
10 | 20
11 | 20
(11 rows)
以下两个查询使用 COUNT
函数统计每个部门的员工人数。左侧的查询使用
COUNT
聚合函数;右侧的查询使用
COUNT
分析函数: