4 聚合函数
(1)计数
- count(*)表示计算总行数,括号中写星号与字段名,结果是相同的
- 查询表中数据数量
select count(*) from employee;
(2)最大值
- max(列)表示求此列的最大值
-- 查询编号最大的人
select max(empno) from employee;
--查询编号最大的骑兵都统
select max(empno) from employee where job='骑兵都统';
(3)最小值
- min(列)表示求此列的最小值
--查询编号最小的骑兵都统
select min(empno) from employee where job='骑兵都统';
(4)求和
- sum(列)表示求此列的和
-- 计算总工资
select sum(salary) from employee;
-- 计算平均工资
select sum(salary)/count(*) as 平均工资 from employee;
(5)平均值
- avg(列)表示求此列的平均值
select avg(salary) as 平均工资 from employee;
5 分组
group by 字段
- group by 字段 的含义:将查询结果按照1个或多个字段进行分组,字段值相同的为一组
- group by可用于单个字段分组,也可用于多个字段分组
select job from employee group by job;
group by单独使用时,只显示出每组的第一条记录, 所以group by单独使用时的实际意义不大通常会和其他方法合用。
1 group by + group_concat()
- group_concat(字段名)可以作为一个输出字段来使用
- 表示分组之后,根据分组结果,使用group_concat()来放置每一组的某字段的值的集合
-- 查看每个工作中的名单
select job,group_concat(nickname) from employee group by job;
-- 查看每个工资中的名单
select salary,group_concat(nickname) from employee group by salary;
2 group by + 聚合函数
-- 查看每个工作中的平均工资
select job,avg(salary) from employee group by job;
-- 查看每个工作中的人数,和平均工资
select job,count(*),avg(salary) from employee group by job;
3 group by + having
- having 条件表达式:用来分组查询后指定一些条件来输出查询结果
- having作用和where一样,但having只能用于group by
-- 查看每个工作中的人数,且人数大于2,和平均工资
select job,count(*),avg(salary) from employee group by job having count(*) >2;
6 获取部分行
格式: select * from 表名 limit [offset,]count
- offset:跳过数据条数
- count:获取数据数量
-- 跳过前两条,从第三条数据开始,获取3条数据
select * from employee limit 2,3;
-- 获取前10条数据
select * from employee limit 10;
select * from employee limit 0,10;
分页
--已知:每页显示m条数据,当前显示第n页,求第n页数据
select * from employee limit (n-1)*m,m; 12
SELECT select_expr [,select_expr,...] [
FROM tb_name
[WHERE 条件判断]
[GROUP BY {col_name | postion} [ASC | DESC], ...]
[HAVING WHERE 条件判断]
[ORDER BY {col_name|expr|postion} [ASC | DESC], ...]
[ LIMIT {[offset,]rowcount | row_count OFFSET offset}] ]