- 1、聚合函数
- 1.1、COUNT 函数
- 1.2、SUM 函数
- 1.3、MAX 函数
- 1.4、MIN 函数
- 1.5、AVG 函数
- 2、ROWNUM 函数
- 2.1、ROWNUM 函数简介
- 2.2、利用 ROWNUM 函数实现分页功能
- 3、高级函数
- 3.1、高级函数简介
- 3.2、语法说明及案例
- 4、总结
1、聚合函数
常见的聚合函数有 COUNT、SUM、MAX、MIN、AVG 共 5 个,它们都可以对一组值执行聚合计算,并返回单个值。聚合函数经常与 SELECT 语句的 GROUP BY 子句一起使用。默认所有聚合函数都会忽略 NULL 值,其中 COUNT 函数稍有不同,本人觉得 SQL 的这个设计还是蛮贴心的,因为这会帮开发者规避掉很多繁琐的细节问题。
因为 COUNT 函数返回值是数据集的行数,与统计字段的值大小无关,所以也可以让 COUNT 函数统计所有行,即不忽略 NULL 值。如果需要 COUNT 函数统计字段值为 NULL 的行,只需要将真实的字段名换成 *
或者是一个具体的常量或变量,如:1、ROWNUM 等。实际开发中一般没人会用变量(不易理解),本人推荐一律用常量(一般来说比用 *
要高效)。
1.1、COUNT 函数
语法:
SELECT COUNT(aggregate_expression)
FROM tables
[WHERE conditions];
或
SELECT expression1, expression2, ... expression_n,
COUNT(aggregate_expression)
FROM tables
[WHERE conditions]
GROUP BY expression1, expression2, ... expression_n;
单独使用:如要统计研发一部的人数。示例:
SELECT COUNT(t.staff_id) count_staff FROM demo.t_staff t WHERE t.dept_code='010101';
结合 GROUP BY 使用:如要统计开发部下各三级部门的人数。示例:
SELECT t.dept_code,COUNT(t.staff_id) count_staff
FROM demo.t_staff t
WHERE INSTR(t.dept_code,'0101')=1
GROUP BY t.dept_code;
1.2、SUM 函数
语法:
SELECT SUM(aggregate_expression)
FROM tables
[WHERE conditions];
或
SELECT expression1, expression2, ... expression_n,
SUM(aggregate_expression)
FROM tables
[WHERE conditions]
GROUP BY expression1, expression2, ... expression_n;
单独使用:如要统计研发一部的固定工资之和。示例:
SELECT SUM(v.fixed_salary) sum_salary FROM demo.v_staff v WHERE v.dept_code='010101';
结合 GROUP BY 使用:如要统计开发部下各三级部门的固定工资之和。示例:
SELECT v.dept_code,SUM(v.fixed_salary) sum_salary
FROM demo.v_staff v
WHERE INSTR(v.dept_code,'0101')=1
GROUP BY v.dept_code;
1.3、MAX 函数
语法:
SELECT MAX(aggregate_expression)
FROM tables
[WHERE conditions];
或
SELECT expression1, expression2, ... expression_n,
MAX(aggregate_expression)
FROM tables
[WHERE conditions]
GROUP BY expression1, expression2, ... expression_n;
单独使用:如要统计研发一部的最高工资。示例:
SELECT MAX(v.fixed_salary) max_salary FROM dem