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

xiaoxiao2021-02-28  99

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进行排序。

转载请注明原文地址: https://www.6miu.com/read-80852.html

最新回复(0)