获取对应的值到另一列的最大值

Obtain corresponding value to max value of another column

我需要找到与另一列最大值对应的值。

我的数据如下:

group subgroup subgroup_2 value_a value_b date
A 101 1 200 101 20220301
A 102 1 105 90 20220301
A 103 2 90 202 20220301
A 211 2 75 107 20220301
B 212 1 91 65 20220301
B 213 1 175 101 20220301

我需要像这样格式化数据:

group subgroup_2 max_value_a value_b date
A 1 200 101 20220301
A 2 90 202 20220301
B 1 175 101 20220301

我可以通过分组相当轻松地实现格式,但是我必须聚合 value_b 才能做到这一点,这并没有给我需要的结果。

我知道我可以在分区依据上使用 rank(),但它似乎没有提供我需要的格式。

这是我在下面使用的查询,但它只提供一个 subgroup_2 的最大值,而不是每个的最大值:

select group, subgroup_2, max_value_a, value_b, date
from
(
select a.group, a.subgroup_2, a.max_value_a, a.value_b, a.date,
       rank() over(partition by a.group, subgroup_2, a.date order by a.max_value_a desc) as rnk
  from table_1 a
)s
where rnk=1

您想在此处使用 ROW_NUMBER

SELECT group, subgroup_2, value_a AS max_value_a, value_b, date
FROM
(
    SELECT group, subgroup_2, value_a, value_b, date,
           ROW_NUMBER() OVER (PARTITION BY group, subgroup_2 ORDER BY value_a DESC) rn
    FROM table_1
) t
WHERE rn = 1;