我想把 code =4 的 rank连续增加的这种只保留最大的,也就是去掉rank =1 和 2 的
然后code =4 的 rank=4、5这种算是正常的不做操作
——————————————————————————————
基于上面的表,我想要的数据
code rank
4 3
5 1
3 1
4 4
3 2
4 5
5 2
也就是code连续的行不能出现相同的code,但是又不是取code最大值(只是连续的行出现了相同的code就要最大的,不连续出现就无所谓)
外面套一层,分组求max值,如果需要继续操作的话,用code,max(rank)关联取明细数据行即可!
——————————
SQL很强大,扩展性很强,有思路灵活运用!
——————————————————————
SELECT
CODE,
m,
max(rankk) AS G
FROM
(
rankk,
row_number () over () AS T,
rankk - row_number () over () AS m
T_0819
) ds1
GROUP BY
m
row_number() over (partition by col1 order by col2),分组聚合的时候按照rank从大到小排序,再在外面筛选排序小于2的
我想先知道这是什么数据库?
1.row_number给每行一个序号as rn,得到一个新表t,用with t as (...)
2.select * from 新表t as a
where not exists(select 1 from 新表t where code=a.code and rn=a.rn+1)
这种用集算器最方便了