sum()over()和count()over()分析函數


sum()over()和count()over()分析函數

Sum()over()和count()over分析函數使用

 

創建測試表

create table test(sales_id varchar2(2),sales varchar2(10),dest varchar2(10),dept varchar2(10),revenue number);

 

插入測試數據

insert into test values('11','smith','hangzhou','市場',1000);

insert into test values('12','smith','wenzhou','市場',2000);

insert into test values('13','allen','wenzhou','渠道',3000);

insert into test values('14','allen','wenzhou','渠道',4000);

insert into test values('15','jekch','shanghai','渠道',2500);

insert into test values('11','smith','hangzhou','市場',1000);

insert into test values('12','smith','wenzhou','市場',2000);

commit;

 

SQL> select * from test;

 

SALES_ID SALES DEST DEPT REVENUE

-------- ---------- ---------- ---------- ----------

11 smith hangzhou 市場 1000

12 smith wenzhou 市場 2000

13 allen wenzhou 渠道 3000

14 allen wenzhou 渠道 4000

15 jekch shanghai 渠道 2500

11 smith hangzhou 市場 1000

12 smith wenzhou 市場 2000

 

SQL> select sales_id,

2 sales,

3 dest,

4 dept,

5 revenue,

6 sum(revenue) over() as 總銷售額

7 from test

8 ;

 

SALES_ID SALES DEST DEPT REVENUE 總銷售額

-------- ---------- ---------- ---------- ---------- ----------

11 smith hangzhou 市場 1000 15500

12 smith wenzhou 市場 2000 15500

13 allen wenzhou 渠道 3000 15500

14 allen wenzhou 渠道 4000 15500

15 jekch shanghai 渠道 2500 15500

11 smith hangzhou 市場 1000 15500

12 smith wenzhou 市場 2000 15500

 

按照sales_id order by排序計算遞加的銷售總額

SQL> select sales_id,sales,dest,dept,revenue,sum(revenue)over(order by sales)遞加銷售總額 from test;

 

SALES_ID SALES DEST DEPT REVENUE 遞加銷售總額

-------- ---------- ---------- ---------- ---------- ------------

14 allen wenzhou 渠道 4000 7000

13 allen wenzhou 渠道 3000 7000

15 jekch shanghai 渠道 2500 9500

11 smith hangzhou 市場 1000 15500

12 smith wenzhou 市場 2000 15500

12 smith wenzhou 市場 2000 15500

11 smith hangzhou 市場 1000 15500

 

7 rows selected

 

 

SQL> select sales_id,sales,dest,dept,revenue,sum(revenue)over(partition by sales_id) 分組銷售總額 from test;

 

SALES_ID SALES DEST DEPT REVENUE 分組銷售總額

-------- ---------- ---------- ---------- ---------- ------------

11 smith hangzhou 市場 1000 2000

11 smith hangzhou 市場 1000 2000

12 smith wenzhou 市場 2000 4000

12 smith wenzhou 市場 2000 4000

13 allen wenzhou 渠道 3000 3000

14 allen wenzhou 渠道 4000 4000

15 jekch shanghai 渠道 2500 2500

sales_id進行分組,然后分組求sum

 

SQL> select sales_id,sales,dest,dept,revenue,sum(revenue)over(partition by sales order by sales_id) 分組遞加銷售總額 from test;

 

SALES_ID SALES DEST DEPT REVENUE 分組遞加銷售總額

-------- ---------- ---------- ---------- ---------- ----------------

13 allen wenzhou 渠道 3000 3000

14 allen wenzhou 渠道 4000 7000

15 jekch shanghai 渠道 2500 2500

11 smith hangzhou 市場 1000 2000

11 smith hangzhou 市場 1000 2000

12 smith wenzhou 市場 2000 6000

12 smith wenzhou 市場 2000 6000

sales進行分組,然后分組內遞加sum。

 

看下來的count()over()分析函數的使用

SQL> select sales_id,sales,count(*)over()求總計數,

2 count(*)over(order by sales_id)遞加求計數,

3 count(*)over(partition by sales_id)分組求計數,

4 count(*)over(partition by sales_id order by sales)分組遞加求計數

5 from test;

 

SALES_ID SALES 求總計數 遞加求計數 分組求計數 分組遞加求計數

-------- ---------- ---------- ---------- ---------- --------------

 


免責聲明!

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



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