您的位置:首页 > 数据库 > Oracle

oracle中的over(partition by )的用法总结

2017-09-01 15:08 239 查看
with tab as
(
select t.link_pid,
t.mesh,
round(x, 8) x,
round(y, 8) y,
round(z, 8) z,
id
from had_link t, table(sdo_util.getvertices(t.geometry)) g

),
tab1 as
(select t.link_pid,
t.mesh,
t.x,
t.y,
t.z,
t.id,
count(*) over(partition by t.link_pid, t.x, t.y, t.z) num,
row_number() over(partition by t.link_pid, t.x, t.y, t.z order by t.id) sq
from tab t

在这个代码中,count(*) over (partition by t.link_pid,t.x,t.y,t.z) num的意思是以t.link_pid, t.x, t.y, t.z这4个字段进行分组,统计分组后这四个字段相同的个数。类似还有count(*) over(order by ……)、sum(amount) over(partition by ……)等,

而在row_number() over...中,记录的是以t.link_pid, t.x, t.y, t.z分组后每条数据显示的行号,以t.id进行排序。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: