--简单Case函数
CASE sex
WHEN ‘1‘ THEN ‘男‘
WHEN ‘2‘ THEN ‘女‘
ELSE ‘其他‘ END
--Case搜索函数
CASE WHEN sex = ‘1‘ THEN ‘男‘
WHEN sex = ‘2‘ THEN ‘女‘
ELSE ‘其他‘ END
这两种方式,可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。
还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。
select distinct 专业名 from 表名;
对表消除,专业名的重复行
select * from 表名 where 总学分 > 50 order by 总学分;
总学分>50且按升序排列
统计查询
常用的聚合函数
1 count : 行数
2 sum : 总和 (求总和)
3 avg : 平均值
4 max 最大值
5 min : 最小值
GROUP BY 对指定的规则对数据进行分组
有group by不一定有having,但有having必须有group by
有group by不一定有having,但有having必须有group by
having必须跟在group by之后,实现对分组结果的筛选
where与having都有筛选的作用,但作用对象不同
当group by与聚合函数配合使用时,功能为分组后计算
当group by与having配合使用时,功能为分组后过滤、
count(*) 查询这字段里的从数量
select count(*) as 总数量 from 表名;
select count(*) as 5分以上 from kc where 学分>5
select max,min,avg from xs;
max最高分,min最低分,avg总学分
select sum(成绩) from 表名 where 学号=’12‘;
统计12学生的总成绩;sum总和
select 性别,count(*) from 表名 group by 性别;
统计性别男女分别的总人数
select 性别,count(*) as 人数 from 表名 where 出生日期>’1888-8-8‘ group by 性别;
统计1888年后出生的男女生各有多少人
select 学号,avg(成绩) from 表名 group by 学号;
统计每个学生的平均成绩
select 课程号,avg(成绩),count(*) from 表名 group by 课程号;
统计被选修的各门课程的平均成绩和该课程的总人数
select 课程号,avg(成绩),count(*) from 表名 group by 课程号 having avg(成绩) >=80
统计被选修的各门课程中平均成绩在80分以上的课程选修该课程人数
select group_concat(学号) as 选1课程的学号 from 表名 where 课程号=1;
查询选修了1课程的学生的学号,显示在一行,中间用逗号隔开