一、count(1)用法
1 问题:查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩
2,表格:见Mysql的select多表查询嵌套二
3,代码:
SELECT student.s_id,student.s_name,AVG(score.s_score)as "平均成绩"
FROM student,score WHERE student.s_id =score.s_id AND
student.s_id in(SELECT s_id from score WHERE score.s_score<60
GROUP BY s_id HAVING COUNT(1)>=2) GROUP BY student.s_id,student
.s_name
二、max (case when then else end)用法小结
1,问题:按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩
2,表格:见Mysql的select多表查询嵌套二
3,实现代码:
select s_id,max(case c_id when '01' then s_score else 0 end)'01',
max(case c_id when '02' then s_score else 0 end)'02',
MAX(case c_id when '03' then s_score else 0 end)'03',AVG(s_score)平均分 from score
group by s_id order by 平均分 desc
//此处max的作用就是聚合查询到的单个课程编号下的3个成绩。以最大的成绩在一行中显示。可参考:https://blog.csdn.net/qqxyy99/article/details/79980005解释
max作用补:
mysql字符串大小比较:使用MAX()对字符串类型大小比较是先比较首字符的ASCII码的大小,然后依次往后进行比较的。
如果对于varchar 型数值score进行按数据大小排序则是MAX(score + 0)。