按日期排序时,我试图获得整数组的排名。某些组具有相同的值,但由其他组分隔。出于这个原因,我不能使用DENSE_RANK,因为它将相同值的整数放在一起。下面的10个值将属于DENSE_RANK中的同一组,我希望它们在排名第2组和第2组中。谢谢你的帮助。
| ID | Date | IntValue | DesiredRankResult |
| 1 | 01 Jan | 10 | 4 |
| 1 | 02 Jan | 10 | 4 |
| 1 | 03 Jan | 20 | 3 |
| 1 | 04 Jan | 20 | 3 |
| 1 | 05 Jan | 10 | 2 |
| 1 | 06 Jan | 10 | 2 |
| 1 | 07 Jan | 30 | 1 |
答案 0 :(得分:0)
您可以使用lead()
和累积总和来完成此操作。我认为它看起来像这样:
select t.*,
sum(case when next_intval = intval then 0 else 1 end) over (partition by id order by date desc) as DesiredRankResult
from (select t.*,
lead(intval) over (partition by id order by date) as next_intval
from t
) t;