gpt4 book ai didi

sql - 使用不同的数字对重复值进行排名

转载 作者:行者123 更新时间:2023-12-04 21:29:40 25 4
gpt4 key购买 nike

假设我有一个包含姓名和数字的表格。

如果有 2 行具有完全相同的值,它将获得相同的排名。

尽管值相同,我如何给它们一个不同的数字?

因此,例如,不是让我的排名像这样 - 1,2,3,3,4(其中项目 3 和 4 具有相同的排名),我希望我的排名看起来像这样 - 1,2,3,4,5

编辑 ——

显示行号对我没有帮助,因为正如我所说,我想对行进行排名。

示例 ——

如果我使用常规排名,这就是我会得到的。我想要的是,对于值为 80 的 User1,它将显示 2 和 3 的排名,而不是 2 和 2。User2 也是如此。
使用行号显然不会给我那个结果......

╔═══════╦═══════╦══════╗
║ Name ║ Value ║ Rank ║
╠═══════╬═══════╬══════╣
║ User1 ║ 90 ║ 1 ║
║ User1 ║ 80 ║ 2 ║
║ User1 ║ 80 ║ 2 ║
║ User1 ║ 70 ║ 3 ║
║ User2 ║ 100 ║ 1 ║
║ User2 ║ 90 ║ 2 ║
║ User3 ║ 90 ║ 2 ║
║ User3 ║ 80 ║ 3 ║
╚═══════╩═══════╩══════╝

希望这足够清楚...谢谢!

最佳答案

为什么这么说ROW_NUMBER()在这里对你没有帮助。

DECLARE @tbl TABLE(Name VARCHAR(10), Value INT)

INSERT @tbl
SELECT 'User1' , 90 UNION ALL
SELECT 'User1' , 80 UNION ALL
SELECT 'User1' , 80 UNION ALL
SELECT 'User1' , 70 UNION ALL
SELECT 'User2' , 100 UNION ALL
SELECT 'User2' , 90 UNION ALL
SELECT 'User3' , 90 UNION ALL
SELECT 'User3' , 80

SELECT Name, Value
,ROW_NUMBER() OVER(PARTITION BY Name ORDER BY Name, Value) AS Rn
FROM @tbl

Name Value Rn
User1 70 1
User1 80 2
User1 80 3
User1 90 4
User2 90 1
User2 100 2
User3 80 1
User3 90 2

关于sql - 使用不同的数字对重复值进行排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30428050/

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