分析函数与聚合函数

与聚合函数一样,分析函数返回聚合结果,但分析函数不会对结果集进行分组。不过,它们会为每个记录多次返回组值,从而实现进一步分析。

通常,分析查询比聚合查询的运行速度更快,占用的资源更少。

示例

以下示例比较了 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 分析函数:

另请参阅