问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

ORACLE的CASE函数和RANK函数套用,这是查询代码中的一部分,代码没问题...

发布网友 发布时间:2022-04-28 15:38

我来回答

2个回答

热心网友 时间:2022-04-09 05:18

CASE WHEN wst.score - 60 < 0 THEN ---当wst.score <60的时候执行开窗函数RANK() OVER
RANK() OVER (PARTITION BY 当wst.score <60的时候,如果wst.score >=60直为null,否则的话当作'A',--〉最终结果是按照wst.score <60(也就是null) 和 'A'分组
CASE WHEN wst.score - 60 >= 0 THEN NULL
ELSE 'A' END ORDER BY wst.score DESC
)
END

整个就是
1)如果wst.score <60
1.1按照 <60('A'). >=60(NULL)分组,注意,此时分组的是A和null
1.2按照A和NULL分组后按照wst.score组内降序排列

所以说你那个SQL语句性能很不好,可以优化的。你可以给个例子和你想要得结果,我可以帮你看看能否改进。

另外,你最外层那个CASE没有else,程序很不健壮哦。。。

热心网友 时间:2022-04-09 06:36

CASE WHEN 相当于 IF/ELSE 的功能

CASE WHEN wst.score - 60 < 0 THEN
RANK() OVER (PARTITION BY
CASE WHEN wst.score - 60 >= 0 THEN NULL ELSE 'A' END ORDER BY wst.score DESC
)
END adjust_flag

也就是
当 wst.score - 60 < 0 的情况下, 一个分支
当 wst.score - 60 >= 0 的情况下, NULL
其他情况下,是 'A'

RANK 排名不连续, 功能与 ROW_NUMBER 类似
按照分数 排名 从高到底
SELECT
RANK() OVER( ORDER BY SUM(grade) DESC) AS NO,
student_name,
SUM(grade) AS AllGrade
FROM
test_course
GROUP BY
student_name
ORDER BY
SUM(grade) DESC

1 甲 185
1 奎 185
3 壬 165
3 乙 165
5 丙 145
6 辛 140
7 丁 125
8 庚 120
9 戊 105
10 己 100

DENSE_RANK 排名连续
按照分数 排名 从高到底

SELECT
DENSE_RANK() OVER( ORDER BY SUM(grade) DESC) AS NO,
student_name,
SUM(grade) AS AllGrade
FROM
test_course
GROUP BY
student_name
ORDER BY
SUM(grade) DESC

1 甲 185
1 奎 185
2 壬 165
2 乙 165
3 丙 145
4 辛 140
5 丁 125
6 庚 120
7 戊 105
8 己 100
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
有要业余时间弹古筝的酒店么 古筝演奏师的就业前景怎么样 茶馆里主要放的音乐类型是 日语一级的话什么水平啊 一级到底要求多少词汇啊? WPS右键菜单(win11) 再生缘 我的温柔暴君结局是什么啊?女主最后傻了? 为什么做爱多了没感情了 情侣之间在一起时间长了是不是做爱的时候也懒得接吻了直接进入主题吗... 夫妻性爱后为何丧失了热情 oracle7中如何分组排序(就像使用rank函数的功能一样的结果) 梦到家中被水淹了,啥意思 昨晚梦到我家了,我回家前面别人家的房子还好好的,可走到我家那路口,发现没路走了,就我一家被水淹了! 梦到去上学别人家房子被水淹没 梦见别的地方房子被洪水冲塌,但是家里有一个生病的老人,这代表什么意 ... 为什么香蕉放冰箱里会变黑? 如何防止香蕉变黑 香蕉的芯变黑还能吃吗? 香蕉里面有点黑了还能吃吗? 教师资格证认定时是不是要求普通话证书在两年的有效期内? 教师考试普通话等级证书有效期是多久? 为了对称,汉字排版竖排顺序可以从左向右吗 东吴大学的校训 闻香识女人电影 三个人戏弄校长那一段话 要英文的 校训在古代叫什么?古代的书院有没有像现在这样的校训? 校长办公室富有个性的名言 牛津大学的校训是什么? 厚德载物,上善若水;天行健,君子以自强不息,这些都是哪个学校的校训啊?还有没有其他学校的? 怎样缩小毛孔去痘印? 怎么收缩毛孔以及去痘印? SQL lag() over()函数用法什么用? oracle 分析函数rank()over()使用,与group by的区别 Oracle row_number() over()解析函数高效实现分页 oracle中的over函数怎么用的,什么意思 如何使用连接表替代oracle 的lag() 函数 oracle 多字段查询数据排重,除了row_number()over(partition by )还能... Oracle数据库下 distinct 与row_number() over的用法 oracle里面更新操作能带有四则运算吗 这句select row_number() over (order by ProductID asc) as RowIndex... Oracle中使用to_number()函数,里面有文字怎么解决 (高分求助)两个比较难的SQL2000的SQL语句查询问题,非专家莫入! 我要用oracle根据我截取到的年龄分组,查询显示其它字段,但是不用max... 使用oracle求出制定日期(timestamp或date类型)的后三天日期,请问用哪 ... 股票里多出标准券是什么意思 股票里的标准券怎么取出 有没有关于excel最基础使用(如使用函数、填充柄、换行时自动编号等)的word版本,最好有截图的 装修必须知道的软装搭配知识都有什么? 美式软装搭配要注意什么?搭配技巧有哪些? 黄色的墙面,软装该如何搭配? 现代简约风格软装如何搭配