sql 使用max()和group by 同时查询这条记录的其他信息
需求是这样的
SELECTMAX (discharge_amount),CHECK_YEAR
FROMims_source_item_summary
GROUP BYCHECK_year
ORDER BY CHECK_YEAR
查询某个时间内最大的值 ,结果如下:
但是我需要不仅仅查时间和最大值,还想要这条记录的id信息或者其他信息。 大概意思是这样 :
SELECTID,MAX (discharge_amount),CHECK_YEAR
FROMims_source_item_summary
GROUP BYCHECK_year
ORDER BY CHECK_YEAR
但是大家知道聚合函数max 是不允许这样使用的。 得需要这样写sql :
SELECT ID,discharge_amount,check_year
FROMims_source_item_summary A
WHEREdischarge_amount IN (SELECTMAX (discharge_amount)FROMims_source_item_summary bWHEREA .check_year = b.check_year //这个很关键GROUP BYcheck_year)
ORDER BY check_year
结果如下 :
如果没有上面的 A . = b. 时间约束 则会出现如下情况: