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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值