数据源
一、分组查询 grop by 分组字段列表 having 分组后条件列表;
1.语法
select 字段列表 from 表名[where 条件] group by 分组字段名 [having分组后的过滤条件];
a.执行时机不同:where 是对分组之前得条件进行过滤得 不满足where条件 不参与分组 而having是分组条件之后进行过滤得
b.判断条件不同:where 不能对聚合函数进行判断 ,而having可以
分组之后查询得字段,一般为聚合函数,查询其他字段是没有意义得
-- 分组查询需求
-- 根据员工性别进行分组 ,统计男性盐工和女性员工得数量
select gender,count(*) from emp group by gender ;
-- 根据性别进行分组 ,统计男性员工和女性员工得平均年龄
select gender,avg(age) from emp group by gender ;
-- 查询年龄小于32得员工,并且根据职业分组,获取员工数量大于等于1得名字
select working,count(*) from emp where age<32 group by working having count(*)>1 ;
二、排序查询 order by
1.语法
select 字段列表 from 表名 order by 字段1 排序方式, 字段2 排序方式;
2.排序方式
asc 升序 (默认值)
desc 降序
多字段得时候,当第一个字段值相同时候,才会根据第二个字段进行排序
-- 排序查询
-- 根据年龄对公司员工升序排序
select * from emp order by age asc;
select * from emp order by age desc ;
-- 根据入职时间进行员工排序
select * from emp order by entrydate ;
-- 根据年龄对对公司员工升序排序年龄相同则按张入职时间排序
select * from emp order by age asc, entrydate desc ;
三、分页查询
1、语法
select 字段列表 from 表名 limit 其实索引,查询记录
- 起始索引,从0开始计算(查询页码-1)*每页显示记录数
- 分页查询是数据库得方言 不同得数据有不同得实现
- 如果查询得第一页数据,其实索引可以省略,直接简写成limit 10.
例子-- 分页查询
-- 查询第一页员工数据 每页展示5条记录
select * from emp limit 0,5;
-- 查询第二页员工数据每页展示4条记录
select * from emp limit 1,3;
四、小练习
-- 案例制作
-- 1.查询年龄为28,25,26 女员工
select * from emp where age in (28,25,26) or gender='女';
-- 2查询年龄难 年龄20~30 并且名字是两个字员工
select * from emp where gender='男' and age>=20 and age<=30 and name like '__';
-- 3统计员工表中小于30 男得和女得人数
select gender,count(*) from emp where age<=30 group by gender;
-- 4.查询所有年龄小于30岁盐工姓名和年龄,并且对查询年龄进行升序排序,如果年龄相同按照入职时间进行降序排序
select * from emp where age<=30 order by age asc ,entrydate desc ;
-- 5查询性别为男 并且年龄再20~35岁 以内得5个员工信息,对查询结果按张升序排序,如果年龄相同按照入职时间进行降序排序
select * from emp where (age between 20 and 31 ) and gender='男' order by age asc , entrydate limit 0,5 ;
|