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