我有一个汇总函数,按(colA)进行分组。它从一组列(列B)中选择最大值,但我也想从同一行中的列(列C)中返回另一个值。但是,如果将3行分组,则从C列中选择第一个值,而不是最大值(MAX(colB))的列。
A B C 1 75 jkl 1 100 abc 1 125 dae 2 200 def 3 300 ghi "SELECT A, MAX(B), C FROM myTable where B > 50 GROUP BY A" returns (first row) A => 1, B => 125, C => jkl I want it to return A => 1, B => 125, C => dae
您将要使用一个子查询,该子查询将按max(b)每个子查询获取A,然后将该值重新连接到表中,以返回与该子查询的值匹配的其余列:
max(b)
A
select * from mytable t1 inner join ( select A, max(b) B from mytable where b >50 group by a ) t2 on t1.a = t2.a and t1.b = t2.b where t1.b >50
参见带有演示的SQL Fiddle