oracle自帶功能強大的分析函式,剛接觸了好幾個,才知道原來寫的一些sql完全可以簡化,相見恨晚吶!
下面將介紹幾個排名的函式。
row_number()
rank()
dense_rank()
row_number可以通過over 根據某欄位排序完之後進行組內(如果有partition by)排序。
rank()是排名的函式,該函式組內排序後會進行跳號,分數相同的作為並列。
dense_rank()該函式不會跳號,分數相同為並列第一,下乙個是第二。
如有個分組(partition by)則可以實現組內排序功能,比如說乙個成績報告單,按科目的排序第一,第二,第三….就可以使用先over(partition by 課程字段 order by 課程字段 )
附錄:看下面兩張圖慢慢消化吧
分組之後以分組字段排序,row_number()即使deptno相同也是不相同,注意
Oracle 之 常用函式
1 round x y 功能 返回四捨五入後的值 引數 x,y,數字型表示式,如果y不為整數則擷取y的整數部分,如果y 0則四捨五入為y位小數,如果小於0則為四捨五入到小數點向左第y位。返回 數字 示例 selectround 5555.6666,2.1 round 5555.6666,2.6 ro...
Oracle常用函式之decode
當欄位username的值為ouxio時,輸出的是12345,當值為hahaa時,輸出22344,其他情況下都輸出emmm。case when篇具體 如下 select case username when ouxio then 12345 when hahaa then 22344 else em...
oracle 分析函式之 over 用法
僅供個人學習提高使用。oracle 語法之 over partition by select from test 資料 a b c 1 1 1 1 2 2 1 3 3 2 2 5 3 4 6 將b列值相同的對應的c 列值加總 select a,b,c,sum c over partition by ...