从子组值中仅获取一项

Get only one item from a subgroup values

我的 SQL table:

中有这个值
A Column | B Column | C Column 
------------------------------
11       | Text1    | 10
11       | Text2    | 20
11       | Text3    | 30
12       | Text4    | 20
12       | Text5    | 15
12       | Text9    | 12
13       | Text60   | 01
13       | Text99   | 05
13       | Text33   | 09
13       | Text0    | 04

我只想得到每个子组中由 'A Column' 分隔的行,其中我在 'C Column' 中具有最高值。例如:我会得到:

A Column | B Column | C Column 
------------------------------
11       | Text3    | 30
12       | Text4    | 20
13       | Text33   | 09

有人可以帮助我吗?我还在学习 sql。

谢谢!

您可以在 t-sql, MS SQL 服务器中按如下方式进行:

;WITH cte AS
(
   SELECT *,
         ROW_NUMBER() OVER (PARTITION BY A_Column ORDER BY C_Column DESC) AS rn
   FROM table_name
)
SELECT *
FROM cte
WHERE rn = 1

请在此处查找类似示例: Get top 1 row of each group

因为您没有指定 RDBMS 系统,所以我想提供一个适用于几乎所有支持 SQL 的 RDBMS 的查询(使用 self joingroup by 之类的下面):

select tb2.id,tb1.b,tb1.c from 
(select t1.b,max(t1.c) c from table_name t1 group by tb1.b) tb1
join table_name tb2 on tb1.b=tb2.b and tb1.c=tb2.c