一尘不染

SQL从聚合函数获取其他行

sql

我有一个汇总函数,按(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

阅读 144

收藏
2021-03-10

共1个答案

一尘不染

您将要使用一个子查询,该子查询将按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

2021-03-10