use*_*780 1 sql-server dense-rank
我有一个要求,我有数据作为
StageID Department Number UserEmail
732 60012 user1@testing.com
733 60012 user1@testing.com
734 60012 user1@testing.com
735 60012 user2@testing.com
736 60012 user2@testing.com
737 60013 user3@testing.com
738 60013 user3@testing.com
Run Code Online (Sandbox Code Playgroud)
我想得到像这样的输出
StageID Department Number UserEmail DRank
732 60012 user1@testing.com 1
733 60012 user1@testing.com 1
734 60012 user1@testing.com 1
735 60012 user2@testing.com 2
736 60012 user2@testing.com 2
737 60013 user3@testing.com 1
738 60013 user3@testing.com 1
Run Code Online (Sandbox Code Playgroud)
我希望在对记录进行排名时考虑DepartmentNumber和UserEmail的组合.我在分区上使用DENSE_RANK()来实现这一点,但不知怎的,我无法得到我想要的输出.我不确定我哪里出错了.有谁可以帮助我
这是我使用的查询
SELECT StageID, DepartmentNumber, UserEmail
,DENSE_RANK() OVER (PARTITION BY DepartmentNumber, UserEmail
ORDER BY DepartmentNumber, UserEmail ASC) AS DRANK
FROM mytable
Run Code Online (Sandbox Code Playgroud)
SELECT StageID, DepartmentNumber, UserEmail
,DENSE_RANK() OVER (PARTITION BY DepartmentNumber
ORDER BY UserEmail ASC) AS DRANK
FROM mytable
Run Code Online (Sandbox Code Playgroud)
Protip - 你永远不希望在PARTITION BY和ORDER BY子句中都有相同的列.
如果我了解你的要求,那就是这样.我认为您希望每个部门行独立排名,并选择列作为电子邮件.如果这不是你的要求,你需要更加明确
我希望在对记录进行排名时考虑组合
DepartmentNumber并UserEmail予以考虑.