我有一个看起来像这样的表格:
--------EXAMPLE---------------------------------------------------------
Cat1 Cat2 Value
a NULL 131
b e1 143
a e2 135
c NULL 136
a e1 132
a NULL 13
c e4 1
我想从上面选择 Cat1 中各种类型具有最高值的行。所以,我的答案如下:
--------EXAMPLE---------------------------------------------------------
Cat1 Cat2 Value
b e1 143
a e2 135
c NULL 136
我正在使用 Microsoft SQL,并且正在寻找高效的工具,因为我的表中有大约 4000 万行需要操作。
谢谢!!
最佳答案
您可以将 CTE
与 DENSE_RANK
结合使用:
WITH cte
AS (SELECT cat1,
cat2,
Value,
Rank = Dense_rank()
OVER (
partition BY cat1
ORDER BY Value DESC)
FROM dbo.tablename)
SELECT cat1,
cat2,
value
FROM cte
WHERE rank = 1
如果您只想要单个(任意)记录且存在多个具有相同最高值的记录,请使用 Row_Number
而不是 Dense_Rank
。
关于sql - 一步选择变量最大的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14448028/