sql經典問題之group by和max函數

原表爲:type=科目,score=成績

 題目:查出每個科目成績最高的人

如果這樣使用select name,type,max(score) from order_test GROUP BY type

結果爲:

發現第三條數據和原來的數據不一致。

這時就要了解一個特性,group by分組後,則返回的是第一條記錄的基本信息的特性

就是因爲這一特性導致我們查的數據不一致,需要對原sql進行修改,排序後再查,這樣第一條數據就是我們需要的。

修改後sql:先子查詢order by,再外層用group by

select name,type,MAX(score) from (select * from order_test order by score desc) as a GROUP BY type

 

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