MYSQL查询之count(1)与max (case when then else end)用法小结

一、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)。

  •  

 

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值