最近在學子查詢,發(fā)現(xiàn)有一個題目如下
要求查詢出兩門及兩門以上不及格者的平均成績
第一想法就是
先查詢出 成績 小于 60 的所有人 再進行子查詢
SELECT `name`,avg(score) avg FROM score WHERE `name` IN ( SELECT `name` FROM score WHERE score < 60 GROUP BY `name` HAVING COUNT(name) >= 2 ) GROUP BY name
再想想,好像有點復雜了。
第二次,想能不能把不及格的成績統(tǒng)計起來,再進行篩選
SELECT `name`,AVG(score)avg,SUM(IF(score<60,1,0)) c FROM score GROUP BY `name` HAVING c >= 2
看了答案, 比我的第二種方案還要好
SELECT `name`,AVG(score) avg,SUM(score<60) c FROM score GROUP BY `name` HAVING c >= 2
提問:有沒有更簡單 或者更復雜的 sql 提供參考。或者大佬們提供相關(guān)的 sql 子查詢題討論討論,也順便學習學習,謝謝。