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

 

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