11.24sum於count的區別,case when的用法以及group by的注意事項 又是努力學習Mysql的一天

11.24 又是努力學習的一天

今天汲取了這樣一句話,編程邏輯思維並不是你創造的而且你看到的變成你的。

今天學到的就是sum與count的區別!
case when的用法
以及group by的使用注意事項。

聚合函數sum 與 count的區別
sum指的是和 count指的是計數
也就意味着與case when連用時,sum計算的是符合條件項,count不論符不符合條件只要部位null就會計數1個。

case when的用法
case when 條件1 then 滿足條件1條件二 else不滿足條件1則else end
end千萬不要忘記!

group by
注意事項:
1.group by 用來分組的字段都要存在於select語句中不然無意義,mysql雖然不會報錯但是沒有意義。(聚合函數除外)
2.group by 要放在where 之後如果想在group by後篩選請使用having
3.group by同樣是非必須字句所以要放在from後order by之前
4.如果group by在子句中指定多個分組,將在最後指定的分組上彙總。
5.如果分組列中有null值,則null將作爲一個分組返回。如果是多行NULL值,將其分爲一組。





題目要求:查詢各科成績最高分、最低分和平均分:以如下形式顯示:課程ID,課程name,最高分,最低分,平均分,及格率,中等率,優良率,優秀率。
及格爲>=60,中等爲:70-80,優良爲:80-90,優秀爲:>=90(重要!)

課程ID,課程name都可以在課程表中找到
select c_id,c_name from course
分數的情況只能在分數表中查詢到
表之間的連接爲c_id
查詢各科成績最高分、最低分和平均分就可以表示爲
select
a.c_id,c_name,max(s_score),min(s_score),avg(s_score)
from
score as a
inner join
course as b
on a.c_id=b.c_id
group by a.c_id,c_name
在這裏插入圖片描述
結果爲:在這裏插入圖片描述
以及格率爲例子來展示sum的妙用
其實看到計算xx率我的思路是用round來計算
但是直到看到大佬的展示
合格率:
可以看做分數大於等於60分以上的人數/總人數
sum(case when b.s_score >= 60 then 1 else 0 end)/count(s_id) as ‘及格率’,
其他的就是修改一下範圍以及名字即可
在這裏插入圖片描述
結果爲:在這裏插入圖片描述






















發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章