Sql 重复值的密集秩
sql希望如何获得这种密集的秩?使用lag计算前一个值是什么,然后是一个累积和:Sql 重复值的密集秩,sql,psql,window-functions,gaps-and-islands,dense-rank,Sql,Psql,Window Functions,Gaps And Islands,Dense Rank,sql希望如何获得这种密集的秩?使用lag计算前一个值是什么,然后是一个累积和: id val dense_rank 1 11 => 1 2 11 1 3 22 2 4 33 3 5 33 3 6 11 4 他是一把小提琴 select t.*, count(*) filter (w
id val dense_rank
1 11 => 1
2 11 1
3 22 2
4 33 3
5 33 3
6 11 4
他是一把小提琴
select t.*,
count(*) filter (where prev_val is null or prev_val <> val) over (order by id) as dense_rank
from (select t.*, lag(val) over (order by id) as prev_val
from t
) t;