外观
分组查询、聚合函数、排序查询
分组查询
对 emp 表按照职位进行分组,并统计每个职位的人数,显示职位和对应人数:
mysql
select epost, count(*) from emp group by epost;1
聚合函数
MAX()
按照部门分组,显示部门、最高薪资:
mysql
select deptno, max(salary)
from emp
group by deptno;1
2
3
2
3
查询每个部门的最高薪资,显示部门、员工姓名、最高薪资:
mysql
select emp.deptno, ename, t1.msal
from emp,
(
select deptno, max(salary) msal
from emp group by deptno
) t1
where emp.deptno = t1.deptno and emp.salary = t1.msal;1
2
3
4
5
6
7
2
3
4
5
6
7
COUNT()
统计 emp 表中薪资大于 3000 的员工个数:
mysql
select count(eno) from emp where salary > 3000;1
SUM()
统计 emp 表中所有员工的薪资总和(不包含奖金):
mysql
select sum(salary) from emp;1
AVG()
统计emp表中员工的平均薪资(不包含奖金):
mysql
-- 普通方式计算平均数
select sum(salary) / count(*) from emp;
-- 使用 `avg` 函数求平均数
select avg(salary) from emp;1
2
3
4
5
2
3
4
5
排序查询
对 emp 表中所有员工的薪资进行升序(从低到高)排序,显示员工姓名、薪资:
mysql
-- 默认就是升序排序,所以 `asc` 可以省略不写
select ename, salary from emp order by salary;1
2
2
对 emp 表中所有员工奖金进行降序(从高到低)排序,显示员工姓名、奖金:
mysql
select ename, bonus
from emp
order by bonus desc;1
2
3
2
3
查询 emp 表中的所有记录,分页显示首页记录(前 3 条记录):
mysql
select * from emp limit 0,3;
# 可读性更高的等价写法
SELECT * FROM emp LIMIT 3 OFFSET 0;1
2
3
4
2
3
4
查询 emp 表中的所有记录,分页显示(每页显示 3 条记录),返回第 2 页(第 4、5、6 条数据):
mysql
select * from emp limit 3,3;
# 可读性更高的等价写法
SELECT * FROM emp LIMIT 3 OFFSET 3;1
2
3
4
2
3
4