gpt4 book ai didi

sql-server - 获取表中每个唯一列值的最大记录

转载 作者:行者123 更新时间:2023-12-04 03:15:13 25 4
gpt4 key购买 nike

我有一个这样的数据库表

A           ||        B      ||         C
------------------------------------------
1 ABC 10
1 XYZ 5
2 EFG 100
2 LMN 150
2 WER 50
3 ABC 50
3 XYZ 75

现在我想要一个这样的结果集,其中我想为 column A 中的每个值获取 column C 的最大值

A           ||        B      ||         C
-----------------------------------------
1 ABC 10
2 LMN 150
3 XYZ 75

我尝试过使用 distinctmax() 但它没有用。像这样

根据#table.A,#table.B 从#table 组中选择不同的#table.A,#table.B,MAX(#table.C)

有没有简单的方法可以做到这一点?

最佳答案

使用 MAX()作为窗口函数:

SELECT t.A, t.B, t.C
FROM
(
SELECT A, B, C, MAX(C) OVER (PARTITION BY A) max_C
FROM yourTable
) t
WHERE t.C = t.max_C

如果您只想为每组 A 检索单个最大记录值,那么你应该使用@GurV建议的方法,即行号:

SELECT t.A, t.B, t.C
FROM
(
SELECT A, B, C, ROW_NUMBER() OVER (PARTITION BY A ORDER BY C, B DESC) row_num
FROM yourTable
) t
WHERE t.row_num = 1

注意ORDER BY C, B在对 ROW_NUMBER() 的调用中.这将放置最大 C记录在每个分区的顶部,然后B降序排列值。不过,只会保留一个值。

关于sql-server - 获取表中每个唯一列值的最大记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41688801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com