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
6 ;
SALES_ID SALES 求總計數 遞加求計數 分組求計數 分組遞加求計數
-------- ---------- ---------- ---------- ---------- --------------
11 smith 7 2 2 2
11 smith 7 2 2 2
12 smith 7 4 2 2
12 smith 7 4 2 2
13 allen 7 5 1 1
14 allen 7 6 1 1
15 jekch 7 7 1 1
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25362835/viewspace-1057319/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 分析函式 over函式
- 【Mysql】Mysql似oracle分析函式sum over的實現MySqlOracle函式
- oracle分析函式,keep and over解說Oracle函式
- oracle的分析函式over 及開窗函式Oracle函式
- OVER(PARTITION BY)函式用法函式
- Oracle over()函式使用Oracle函式
- mysql自動排序函式dense_rank() over()、rank() over()、row_num() over()用法和區別MySql排序函式
- ROW_NUMBER() OVER() 分析函式的用法函式
- Oracle分析函式之開窗函式over()詳解Oracle函式
- row_number() over函式函式
- oracle的分析函式over(Partition by...) 及開窗函式Oracle函式
- lead lag rank()over()dense_rank()row_number()over()rollupcube幾大分析函式函式
- oracle over函式 詳解(轉)Oracle函式
- 【函式】oracle視窗函式over()的理解函式Oracle
- Oracle 中的 ROW_NUMBER() OVER() 分析函式的用法Oracle函式
- Oracle 中分析函式用法之--rank(),dense_rank(),partition,over()Oracle函式
- Oracle統計分析函式集,over(partition by..) 的運用Oracle函式
- 【SQL】Lag/Rank/Over視窗函式揭秘,資料分析之旅SQL函式
- Spark Streaming--開窗函式over()Spark函式
- ROW_NUMBER() OVER函式的基本用法函式
- 語法:OVER(PARTITION BY)及開窗函式函式
- Oracle 中 Over() 函式學習總結Oracle函式
- oracle的sql查詢分析函式-高階部分-分析函授over()子句OracleSQL函式
- row_number() over,rank() over,dense_rank() over的區別
- sum over partition by函式的用法-但是查出來的資料格式不好給前臺用,廢棄函式
- over (partition by)
- Import OverImport
- (轉)Oracle語法之OVER(PARTITION BY)及開窗函式Oracle函式
- 【Analytic】分析函式之COUNT函式函式
- sqlserver2005資料庫映象 的switch over 和fail overSQLServer資料庫AI
- Oracle 語法之 OVER (PARTITION BY ..) 及開窗函式 轉載Oracle函式
- count 函式原始碼分析函式原始碼
- 分析函式系列之sum(col1) over(partition by col2 order by col3):實現分組彙總或遞增彙總函式
- CF1930D1 - Sum over all Substrings (Easy Version)
- oracle下資料的排序分組row_number() over()--分析函式,可用於去重Oracle排序函式
- laravel mysql聚合函式使用方法(count,sum,max,min,avg)LaravelMySql函式
- workerman 網路框架原始碼核心分析和註解 over 篇框架原始碼
- SQL語句中的rank () over , row_number() over ,rank_dense ()SQL