最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

oracle两个列累加,Oracle

IT圈 admin 11浏览 0评论

oracle两个列累加,Oracle

例子:

数据表中最后一列就是累加的效果

(1)累加sql:

select t.acc_pedal_pos,count(*) num,sum(count(*)) over(order by t.acc_pedal_pos) accu_sum from  GT1117CARDATA t where t.acc_pedal_pos>0 group by t.acc_pedal_pos  order by t.acc_pedal_pos

#(自己这里加个感慨:感觉Oracle还有很多隐藏功能,比如这个sum()+over()用法,很神奇,我在sql数据库中也遇到了类似问题,用的是定义变量+case when用法,可以去我的SQL文章里去找一下,也有记录,就是不知道,是不是SQL也有类似于Oracle的sum+over快捷用法)

(2)根据累计求和,进一步求累计值占总和的百分比sql:

select t1.*,round(t1.accu_sum/t2.allsum*100,2)||'%' from(select t.acc_pedal_pos,

count(*) num,

sum(count(*)) over(order by t.acc_pedal_pos) accu_sum

from GT1117CARDATA t

where t.acc_pedal_pos > 0

group by t.acc_pedal_pos

order by t.acc_pedal_pos)t1,(select count(acc_pedal_pos) allsum from GT1117CARDATA where acc_pedal_pos>0) t2

下边上个例子——不计算累计,直接应用了上边的第(2)步,计算占整体比:

结果:

脚本:占比=t1是统计专区的线索数量(利用了专区列,count(*)+group by 专区) /  t2是不区分专区,进行整体的线索数量统计(利用了count(*))

oracle两个列累加,Oracle

例子:

数据表中最后一列就是累加的效果

(1)累加sql:

select t.acc_pedal_pos,count(*) num,sum(count(*)) over(order by t.acc_pedal_pos) accu_sum from  GT1117CARDATA t where t.acc_pedal_pos>0 group by t.acc_pedal_pos  order by t.acc_pedal_pos

#(自己这里加个感慨:感觉Oracle还有很多隐藏功能,比如这个sum()+over()用法,很神奇,我在sql数据库中也遇到了类似问题,用的是定义变量+case when用法,可以去我的SQL文章里去找一下,也有记录,就是不知道,是不是SQL也有类似于Oracle的sum+over快捷用法)

(2)根据累计求和,进一步求累计值占总和的百分比sql:

select t1.*,round(t1.accu_sum/t2.allsum*100,2)||'%' from(select t.acc_pedal_pos,

count(*) num,

sum(count(*)) over(order by t.acc_pedal_pos) accu_sum

from GT1117CARDATA t

where t.acc_pedal_pos > 0

group by t.acc_pedal_pos

order by t.acc_pedal_pos)t1,(select count(acc_pedal_pos) allsum from GT1117CARDATA where acc_pedal_pos>0) t2

下边上个例子——不计算累计,直接应用了上边的第(2)步,计算占整体比:

结果:

脚本:占比=t1是统计专区的线索数量(利用了专区列,count(*)+group by 专区) /  t2是不区分专区,进行整体的线索数量统计(利用了count(*))

发布评论

评论列表 (0)

  1. 暂无评论