一. 概述
group_by的意思是根据by对数据按照哪个字段进行分组,或者是哪几个字段进行分组。
二. 语法
select 字段 from 表名 where 条件 group by 字段
或者
select 字段 from 表名 group by 字段 having 过滤条件
注意:对于过滤条件,可以先用where,再用group by或者是先用group by,再用having
EMP | |||||||
员工编号 | 员工姓名 | 工作 | 领导编号 | 入职时间 | 工资 | 奖金 | 部门编号 |
EMPNO | ENAME | JOB | MGR | HIREDATE | SAL | COMM | DEPTNO |
7369 | 王昭君 | 职员 | 7902 | 1980-12-17 | 800 | 20 | |
7499 | 诸葛亮 | 销售员 | 7698 | 1981-02-20 | 1600 | 300 | 30 |
7521 | 张飞 | 销售员 | 7698 | 1981-02-22 | 1250 | 500 | 30 |
7566 | 白起 | 经理 | 7839 | 1981-04-02 | 2975 | 20 | |
7654 | 大乔 | 销售员 | 7698 | 1981-09-28 | 1250 | 1400 | 30 |
7698 | 孙尚香 | 经理 | 7839 | 1981-05-01 | 2850 | 30 | |
7782 | 百里玄策 | 经理 | 7839 | 1981-06-09 | 2450 | 10 | |
7788 | 小乔 | 分析员 | 7566 | 1987-07-03 | 3000 | 20 | |
7839 | 百里守约 | 总裁 | 1981-11-17 | 5000 | 10 | ||
7844 | 妲己 | 销售员 | 7698 | 1981-09-08 | 1500 | 0 | 30 |
7876 | 李白 | 职员 | 7788 | 1987-07-13 | 1100 | 20 | |
7900 | 孙膑 | 职员 | 7698 | 1981-12-03 | 950 | 30 | |
7902 | 阿珂 | 分析员 | 7566 | 1981-12-03 | 3000 | 20 | |
7934 | 鲁班七号 | 职员 | 7782 | 1981-01-23 | 1300 | 10 |
SALGRADE | ||
等级 | 最低工资 | 最高工资 |
GRADE | LOSAL | HISAL |
1 | 700 | 1200 |
2 | 1201 | 1400 |
3 | 1401 | 2000 |
4 | 2001 | 3000 |
5 | 3001 | 9999 |
group by 分组后,取到的是这个组中的一条数据,通常是按照主键排序后的第一条
分组前,先对数据按照最低工资进行排序,
返回每个部门中经理的最低工资。
-- 分组后,取到的时这个组中的一条数据,通常是按照主键排序后的第一条
-- 分组前,先对数据按照最低工资进行排序
-- select * from emp order by sal
-- 按照什么分组,取每组最新的数据
-- select count(*),t.ename,min(t.sal) from
-- (select * from emp order by sal) t
-- where t.job='经理' group by t.deptno