假设我有一张像:
create table t1 (d1 date)
没有钥匙,所以日期可以重复。我想按排名降序选择不同的日期,这样排名从 1 开始并按顺序递增。
Date Rank
---------- ----
2020-01-29 1
2020-01-24 2
2020-01-22 3
我不是 SQL 专家,当我查找 doc 时,RANK()
我发现排名数字是不确定的。
因此,无论是否使用RANK()
.
我已经尝试过有人问过 ROW_NUMBER()
SELECT DISTINCT
d1, ROW_NUMBER() OVER (ORDER BY d1) AS Rank
FROM
t1
ORDER BY
d1 DESC
但这会产生类似的东西:
Date Rank
---------- ----
2020-01-29 123
2020-01-24 122
2020-01-22 121
我想这就是你想要的。当你有重复的d1
表,你需要group by
的d1
列
select d1, ROW_NUMBER() OVER (ORDER BY d1 DESC) AS [Rank]
from t1
group by d1
order by d1 desc
或者如果您更喜欢使用 distinct
select d1, rank() over (order by d1 desc) as [Rank]
from
(
select distinct d1
from t1
) d
order by [Rank]
要么 dense_rank()
select distinct d1, dense_rank() over (order by d1 desc) as [Rank]
from t1
order by [Rank]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句