Oracle over(partition by) 用法
语法与说明
select AAA, 序号函数 over(partition by BBB order by CCC) from table;
- select后面跟什么字段随便。
- 序号函数有多种,类似row_number()等。
- partition by后面跟的字段实际是分组字段,与group by 后面跟的字段类似。
- 再之后的order字段,就是分组后排序。
序号函数说明
测试数据
CREATE TABLE over_func_tmp(
name varchar(10),
age number(1)
);
INSERT INTO over_func_tmp(name,age)
SELECT 'a', 1 FROM dual UNION ALL
SELECT 'a', 1 FROM dual UNION ALL
SELECT 'a', 2 FROM dual UNION ALL
SELECT 'a', 4 FROM dual
;
row_number()
直接按照结果从1开始升序。
SELECT t.name, t.age , ROW_NUMBER() over(PARTITION BY name ORDER BY age) AS no FROM over_func_tmp t;
--a 1 1
--a 1 2
--a 2 3
--a 4 4
rank()
如果结果中,某数据相同,则序号相同,下一行数据序号+2。
SELECT t.name, t.age , rank() over(PARTITION BY name ORDER BY age) AS no FROM over_func_tmp t;
--a 1 1
--a 1 1
--a 2 3
--a 4 4
dense_rank()
如果结果中,某数据相同,则序号相同,下一行数据序号+1。
SELECT t.name, t.age , dense_rank() over(PARTITION BY name ORDER BY age) AS no FROM over_func_tmp t;
--a 1 1
--a 1 1
--a 2 2
--a 4 3
本文来自博客园,作者:疯狂马铃薯,转载请注明原文链接:https://www.cnblogs.com/hr0552/p/17695155.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!