oracle中的分析函式的使用

2021-07-11 01:16:55 字數 1162 閱讀 4570

之前進行資料統計時一直用的group by,各種子查詢,外鏈結等等。雖然知道分析函式卻用的不太多。最近對分析函式進行進一步的學習,整理一些學習成果。

分析函式語法:

analytic-function(,,…) 

over(

-clause

>

<

order

-by-clause

>

>

例項:

select ename 姓名,

deptno 部門,

sal 薪資,

--該員工所在部門的薪資總和

sum(nvl(sal,0)) over (partition by deptno order

by deptno) 部門薪資總和 ,

--該員工所在部門的最高薪資

max(nvl(sal,0)) over(partition by deptno order

by deptno) 部門薪資最大值,

--該員工在該部門薪資排行

row_number() over(partition by deptno order

by nvl(sal,0) desc) 該員工在該部門薪資排行,

--該員工在該部門薪資佔比(百分制,保留兩位小數)

round(ratio_to_report(nvl(sal,0)) over(partition by deptno) * 100 ,2)該員工在該部門薪資佔比,

--該員工在全部部門薪資排行

row_number() over( order

by nvl(sal,0) desc) 該員工在全部部門薪資排行,

--該員工的薪資打敗了百分之多少的人

round((1-percent_rank() over( order

by nvl(sal,0) desc) )* 100 ,2)打敗佔比

from emp order

by deptno

上面我使用的是當nvl定義當sal為空時,讓其為0,這樣一方面的考慮合理性,另一方面是避免空值位於no.1,做排名時,oracle預設將空值置於第一位。當然你也可以使用nulls last

oracle 分析函式的使用

1.rownum與rowid rownum 行數 行號.在查詢語句中之使用於 rowid 編碼 編號 唯一識別號.他們都是偽列,可以理解成表中的乙個列只是他們並不是你建立的。同樣是偽列區別是什麼呢?rowid是你錄入資料時有資料庫自動為這條記錄新增的唯一的18位編號是乙個物理編號用於找到這條記錄 順...

oracle分析函式的使用

1.實現組資料的相加,如下列資料,以前的處理方法是在前台進行加總處理。如果用分析函式處理就直接在後台處理了。74pcs 74 4 pcs70 1pcs 69 4 pcs65 4pcs 61100 pcs161 4pcs 157 2 pcs155 2pcs 153 2 pcs151 2pcs 1492...

oracle中的函式使用

摘要 一函式的基本應用 1 建立函式 sql視窗中 create or replace function get hello msg return varchar2 as begin return hello world end get hello msg 函式必須有返回值,該函式的返回值是varc...