group by 和 max()的使用
遇到了大坑啦,哎~~
数据表
sql 语句
SELECT ename,job,MAX(sal) FROM emp
GROUP BY job
执行结果
发现 max 最大的结果是正确的,但是其余的信息可能是错误的
怎么解决呢?
先按照业务逻辑内部排好序,在聚合默认取出第一行
SELECT ename,job,MAX(sal) max FROM (
SELECT *
FROM emp
ORDER BY sal DESC
) e
GROUP BY e.job
ORDER BY max desc
执行结果如下
总结:group by 分组后,再在每一个小组中进行筛选, 而max就仅仅是筛选小组中某一列的最大值,其余列默认是小组中的第一条记录