聚合函数
- 对查询的结果进行统计计算
常用聚合函数
- COUNT():统计指定列不为NULL的记录行数;
- MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
- MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
- SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
- AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
使用
COUNT
查询employee表中记录数:
SELECT COUNT(*) AS total_record FROM employee;
查询员工表中有绩效的人数
SELECT COUNT(performance) FROM employee;
查询有绩效的人数,和有管理费的人数:
SELECT COUNT(performance), COUNT(manage) FROM employee;
SUM和AVG, MAX和MIN
- 查询所有雇员月薪和:
SELECT SUM(salary) FROM employee;
- 查询所有雇员月薪和,以及所有雇员绩效和
SELECT SUM(salary), SUM(performance) FROM employee;
- 查询所有雇员月薪+绩效和:
SELECT SUM(salary+IFNULL(performance,0)) FROM employee;
- 统计所有员工平均工资:
SELECT AVG(salary) FROM employee;
- 查询最高工资和最低工资:
SELECT MAX(salary), MIN(salary) FROM employee;
分组查询
- 什么是分组查询:什么是分组查询
分组使用
根据gender字段来分组,gender字段的全部值只有两个('男'和'女'),所以分为了两组
SELECT gender from employee GROUP BY gender;
- 分组注意事项: 在使用分组时,select后面直接跟的字段一般都出现在group by 后
group by + group_concat()
- group_concat(字段名)可以作为一个输出字段来使用
- 表示分组之后,根据分组结果,使用group_concat()来放置每一组的某字段的值的集合
SELECT gender,GROUP_CONCAT(name) from employee GROUP BY gender;
group by + 聚合函数
- 通过group_concat()的启发,我们既然可以统计出每个分组的某字段的值的集合,那么我们也可以通过集合函数来对这个"值的集合"做一些操作
- 查询每个部门的部门名称和每个部门的工资和
SELECT department,SUM(salary) FROM employee GROUP BY department;
- 查询每个部门的部门名称以及每个部门的人数
SELECT department,COUNT(*) FROM employee GROUP BY department;
- 查询每个部门的部门名称以及每个部门工资大于1500的人数
SELECT department,COUNT(salary) FROM employee WHERE salary > 1500 GROUP BY department;
书写顺序
select --> form --> where --> Group by --> having --> Order by --> limit
执行顺序
form --> where --> Group by --> Ghaving --> select --> Order by --> limit
limit
- 从哪一行开始查,总共要查几行
- Limit 参数1,参数2
- 格式:
select * from 表名 limit 0,3;
- 分页思路
int curPage = 1 当前页
int pageSize = 10 每页多少条数据
当前页为1 第一页从0开始 (1-1)*10 = 0
SELECT * form employee LIMIT (curPage-1) * pagesSize,pagesSize;