SQL问题!救命

我想把 code =4 的 rank连续增加的这种只保留最大的,也就是去掉rank =1 和 2 的

然后code =4 的 rank=4、5这种算是正常的不做操作

image.png

——————————————————————————————

基于上面的表,我想要的数据

code   rank

4     3

5     1

3     1

4     4

3     2

4     5

5     2

也就是code连续的行不能出现相同的code,但是又不是取code最大值(只是连续的行出现了相同的code就要最大的,不连续出现就无所谓)

Srafy 发布于 2021-8-19 10:44 (编辑于 2021-8-19 10:57)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
0
zsh331Lv8专家互助
发布于2021-8-19 10:49(编辑于 2021-8-19 11:39)

外面套一层,分组求max值,如果需要继续操作的话,用code,max(rank)关联取明细数据行即可!

——————————

SQL很强大,扩展性很强,有思路灵活运用!

——————————————————————

SELECT

CODE,

m,

max(rankk) AS G

FROM

(

SELECT

CODE,

rankk,

row_number () over () AS T,

rankk - row_number () over () AS m

FROM

T_0819

) ds1

GROUP BY

CODE,

m

——————————————————————

image.png

image.png

  • Srafy Srafy(提问者) 我不是取max值,code =4 的我只是不要12 , 345都要
    2021-08-19 10:51 
  • zsh331 zsh331 回复 Srafy(提问者) 「我不是取max值,code =4 的我只是不要12 , 345都要」你这个回复和你的题目要求明显不符,别逗我们呀,时间很宝贵的= =###
    2021-08-19 10:54 
  • Srafy Srafy(提问者) 我说的是rank连续增加的时候,345是一个闭环,出现3345我就不要第一个3
    2021-08-19 10:59 
  • zsh331 zsh331 回复 Srafy(提问者) 好的,早点把这个图放上来需求就清取数对吧!了,连续时取Max值,不存在连续数,正常祛暑
    2021-08-19 11:01 
  • Srafy Srafy(提问者) 回复 zsh331 是的,这块不知道要怎么去写了
    2021-08-19 11:05 
最佳回答
0
廿三Lv6中级互助
发布于2021-8-19 10:50
  • Srafy Srafy(提问者) 我完善一下问题吧
    2021-08-19 10:52 
  • 廿三 廿三 回复 Srafy(提问者) 那你取排序小于3的,结果就是rank = 3,4,5
    2021-08-19 10:56 
  • Srafy Srafy(提问者) 回复 廿三 因为不一定每次都是1 2 的
    2021-08-19 11:09 
最佳回答
0
Z4u3z1Lv6专家互助
发布于2021-8-19 10:56

我想先知道这是什么数据库?

最佳回答
0
杨朝健Lv5中级互助
发布于2021-8-19 11:29(编辑于 2021-8-19 11:31)

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)

最佳回答
0
用户a8068717Lv4初级互助
发布于2021-8-19 13:46

这种用集算器最方便了

  • 6关注人数
  • 768浏览人数
  • 最后回答于:2021-8-19 13:46
    请选择关闭问题的原因
    确定 取消
    返回顶部