Oracle-累加功能,累加百分比


最近做數據分析,需要用到累加功能,發現強大的oracle還真有,用over(order by field)

例子:

數據表中最后一列就是累加的效果

 

(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

以上的內容是參考了:https://www.cnblogs.com/yuwenfeng/p/4235632.html

 

下邊上個例子——不計算累計,直接應用了上邊的第(2)步,計算占整體比:

 

結果:

 

 

 腳本:占比=t1是統計專區的線索數量(利用了專區列,count(*)+group by 專區) /  t2是不區分專區,進行整體的線索數量統計(利用了count(*))

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM