窗口函数 RANK()、DENSE_RANK() 等的特殊情况
Posted
技术标签:
【中文标题】窗口函数 RANK()、DENSE_RANK() 等的特殊情况【英文标题】:Particular Case of Window Functions RANK(), DENSE_RANK() , etc 【发布时间】:2022-01-04 01:32:00 【问题描述】:我希望获得与每个Email
关联的最后三个Tax Numbers
,按Created Date
列排序。
例如:
Email Tax N° Created Date Rank
dam_10@o.com 708157054 27-09-16 1
dam_10@o.com 708157054 27-09-16 1
dam_10@o.com 21714574 27-08-16 2
dam_10@o.com 21714574 27-08-16 2
dam_10@o.com 21714574 27-08-16 2
dam_10@o.com 21714574 27-08-16 2
dam_10@o.com 21714574 24-08-16 2
dam_10@o.com 20222011877 04-08-15 3
dam_10@o.com 20222011877 04-08-15 3
dam_10@o.com 33546663669 28-08-13 4
dam_10@o.com 30523312398 28-08-13 5
dam_10@o.com 30523312398 28-08-13 5
est_20@r.com 123722900 28-08-13 1
est_20@r.com 512381112 28-08-13 2
我尝试使用窗口函数DENSE_RANK()
,但我无法调试Created Date
不同但Tax Number
相同的情况:
DENSE_RANK() OVER (PARTITION BY M.[Email] ORDER BY A.[Created Date] DESC, A.[Tax Number] DESC) AS [Ranking]
It should be Rank 2
【问题讨论】:
【参考方案1】:我先用下面的函数解决了MAX(A.[Created Date]) OVER (PARTITION BY [Email], [Tax Number]) AS [Last Created Date]
【讨论】:
以上是关于窗口函数 RANK()、DENSE_RANK() 等的特殊情况的主要内容,如果未能解决你的问题,请参考以下文章
窗口函数rank, dense_rank, row_number的区别
mysql窗口函数rank() over、dense_rank() over、row_number() over 使用心得