通用的行列轉換的方法
在工作中經常需要用到行列轉換進行聚合統計之類的事兒,現在就說一個最簡單最通用的方法, 適應sum()/max()/min()等函式結合decode來實現行列轉換, 拿oracle中典型的scott.emp表為例,
現在如果想要按照部門統計一下, 各個manager下的員工的平均薪水(或者最高薪水、最低、合計薪水),這樣就使用到了行列轉換, 可做如下操作來實現:
可以看到很容易的實現了資料的統計。
當然行列的轉換的方法還有其他幾種, 如使用case when ,或者使用wmsys.wm_concat函式都都可以實現。 不過上面的方法算是最容易理解了的吧。
點選(此處)摺疊或開啟
-
SQL> SELECT * FROM SCOTT.EMP ;
-
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
-
----- ---------- --------- ----- ----------- --------- --------- ------
-
7369 SMITH CLERK 7902 1980/12/17 800.00 20
-
7499 ALLEN SALESMAN 7698 1981/2/20 1600.00 300.00 30
-
7521 WARD SALESMAN 7698 1981/2/22 1250.00 500.00 30
-
7566 JONES MANAGER 7839 1981/4/2 2975.00 20
-
7654 MARTIN SALESMAN 7698 1981/9/28 1250.00 1400.00 30
-
7698 BLAKE MANAGER 7839 1981/5/1 2850.00 30
-
7782 CLARK MANAGER 7839 1981/6/9 2450.00 10
-
7788 SCOTT ANALYST 7566 1987/4/19 3000.00 20
-
7839 KING PRESIDENT 1981/11/17 5000.00 10
-
7844 TURNER SALESMAN 7698 1981/9/8 1500.00 0.00 30
-
7876 ADAMS CLERK 7788 1987/5/23 1100.00 20
-
7900 JAMES CLERK 7698 1981/12/3 950.00 30
-
7902 FORD ANALYST 7566 1981/12/3 3000.00 20
-
7934 MILLER CLERK 7782 1982/1/23 1300.00 10
- 14 rows selected
點選(此處)摺疊或開啟
-
SQL> select deptno ,
-
2 avg(decode(mgr,'7566' ,sal,0)) jones ,
-
3 avg(decode(mgr,'7698' , sal,0)) BLAKE ,
-
4 avg(decode(mgr,'7782' ,sal,0)) CLARK ,
-
5 avg(decode(mgr,'7788' , sal,0)) SCOTT ,
-
6 avg(decode(mgr,'7839' , sal,0)) KING ,
-
7 avg(decode(mgr,'7902' , sal,0)) FORD
-
8 from scott.emp
-
9 group by deptno
-
10 ;
-
DEPTNO JONES BLAKE CLARK SCOTT KING FORD
-
------ ---------- ---------- ---------- ---------- ---------- ----------
-
30 0 1091.66666 0 0 475 0
-
20 1200 0 0 220 595 160
- 10 0 0 433.333333 0 816.666666 0
可以看到很容易的實現了資料的統計。
當然行列的轉換的方法還有其他幾種, 如使用case when ,或者使用wmsys.wm_concat函式都都可以實現。 不過上面的方法算是最容易理解了的吧。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29194724/viewspace-2149186/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用vue實現行列轉換的一種方法。Vue
- Oracle行列轉換及pivot子句的用法Oracle
- mysql行列轉換詳解MySql
- 記錄一個行列轉換
- 例項詳解構建數倉中的行列轉換
- Spark實現行列轉換pivot和unpivotSpark
- Restcloud ETl實踐之資料行列轉換RESTCloud
- 自定義跳轉函式的通用unhook方法函式Hook
- queer/utt:utt是通用的開源文字轉換器
- 實現二維陣列的行列互換陣列
- QString與QByteArray互相轉換的方法
- SQL 如何實現動態的行列轉置SQL
- JS中的資料型別轉換:String轉換成Number的3種方法JS資料型別
- 在報表中錄入資料時如何實現行列轉換
- CAD怎麼轉換成PDF格式?CAD轉換PDF的正確方法
- PDF轉PPT怎麼轉?好用的PDF轉換方法有哪些?
- 微信圖片轉換成文字的方法
- 【java】int轉換成String的四種方法Java
- python hex轉ascii轉換Python程式碼的簡單方法PythonASCII
- 超簡單的,掃描PDF轉換成Word的方法
- csv格式怎麼轉換成excel?csv格式轉換成excel格式檔案的方法Excel
- 報表如何實現行列互換效果?
- 工具方法:時間轉換
- JPG轉PDF如何實現?圖片批次轉換PDF的快捷方法
- 有什麼簡單的將caj轉換成Word的方法
- heic轉換格式的兩種方法:你get到了嗎
- JS字串轉換為JSON的四種方法筆記字串JSON筆記
- ArcGIS地圖投影與座標系轉換的方法地圖
- Java中將Excel轉換為JSON的兩種方法JavaExcelJSON
- m4v如何轉換成mp4?影片格式轉換的實用方法操作
- excel列轉行怎麼做 excel如何轉置行列Excel
- 用於日期轉換的訊息轉換器
- 對通用骨架提取方法的改進
- 抽樣之逆轉換方法
- 行列式的計算
- Flutter 鎖定行列的 FlexGridFlutterFlex
- web前端--最好用的切圖方法(轉換為智慧物件)Web前端物件
- 有哪些免費的方法可以將PDF轉換成Word?
- cad圖紙怎麼轉換成pdf格式?Cad快速轉為pdf的方法