最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Oracle中rank,over partition函數的使用方法

 更新時間:2016年05月26日 09:33:03   作者:秦風  
本文主要介紹Oracle中rank,over partition函數的用法,希望對大家有所幫助。

排列(rank())函數。這些排列函數提供了定義一個集合(使用 PARTITION 子句),然后根據某種排序方式對這個集合內的元素進行排列的能力,下面以scott用戶的emp表為例來說明rank over partition如何使用。

1)查詢員工薪水并連續(xù)求和

select deptno,ename,sal,

sum(sal)over(order by ename) sum1, 
sum(sal)over() sum2,             
100* round(sal/sum(sal)over(),4) "bal%"
from emp

結果如下:

    DEPTNO ENAME             SAL       SUM1       SUM2       bal%
---------- ---------- ---------- ---------- ---------- ----------
        20 ADAMS            1100       1100      29025       3.79
        30 ALLEN            1600       2700      29025       5.51
        30 BLAKE            2850       5550      29025       9.82
        10 CLARK            2450       8000      29025       8.44
        20 FORD             3000      11000      29025      10.34
        30 JAMES             950      11950      29025       3.27
        20 JONES            2975      14925      29025      10.25
        10 KING             5000      19925      29025      17.23
        30 MARTIN           1250      21175      29025       4.31
        10 MILLER           1300      22475      29025       4.48
        20 SCOTT            3000      25475      29025      10.34

    DEPTNO ENAME             SAL       SUM1       SUM2       bal%
---------- ---------- ---------- ---------- ---------- ----------
        20 SMITH             800      26275      29025       2.76
        30 TURNER           1500      27775      29025       5.17
        30 WARD             1250      29025      29025       4.31

 

2)如下:

select deptno,ename,sal,
sum(sal)over(partition by deptno order by ename) sum1,
sum(sal)over(partition by deptno) sum2,
sum(sal)over(partition by deptno order by sal) sum3,
100* round(sal/sum(sal)over(),4) "bal%"
from emp

結果如下:

    DEPTNO ENAME             SAL       SUM1       SUM2       SUM3       bal%
---------- ---------- ---------- ---------- ---------- ---------- ----------
        10 CLARK            2450       2450       8750       3750       8.44
        10 KING             5000       7450       8750       8750      17.23
        10 MILLER           1300       8750       8750       1300       4.48
        20 ADAMS            1100       1100      10875       1900       3.79
        20 FORD             3000       4100      10875      10875      10.34
        20 JONES            2975       7075      10875       4875      10.25
        20 SCOTT            3000      10075      10875      10875      10.34
        20 SMITH             800      10875      10875        800       2.76
        30 ALLEN            1600       1600       9400       6550       5.51
        30 BLAKE            2850       4450       9400       9400       9.82
        30 JAMES             950       5400       9400        950       3.27

    DEPTNO ENAME             SAL       SUM1       SUM2       SUM3       bal%
---------- ---------- ---------- ---------- ---------- ---------- ----------
        30 MARTIN           1250       6650       9400       3450       4.31
        30 TURNER           1500       8150       9400       4950       5.17
        30 WARD             1250       9400       9400       3450       4.31

3)如下:

select empno,deptno,sal,
sum(sal)over(partition by deptno) "deptSum",
rank()over(partition by deptno order by sal desc nulls last) rank,
dense_rank()over(partition by deptno order by sal desc nulls last) d_rank,
row_number()over(partition by deptno order by sal desc nulls last) row_rank
from emp

注:

rang()函數主要用于排序,并給出序號

dense_rank():功能同rank()一樣,區(qū)別在于,rank()對于排序并的數據給予相同序號,接下來的數據序號直接跳中躍,dense_rank()則不是,比如數據:1,2,2,4,5,6.。。。。這是rank()的形式

1,2,2,3,4,5,。。。。這是dense_rank()的形式

1,2,3,4,5,6.。。。。。這是row_number()函數形式

row_number()函數則是按照順序依次使用,相當于我們普通查詢里的rownum值

其實從上面三個例子當中,不難看出over(partition by ... order by ...)的整體概念,我理解是

partition by:按照指字的字段分區(qū),如果沒有則針對全體數據
order by:按照指定字段進行連續(xù)操作(如求和(sum),排序(rank()等),如果沒有指定,就相當于對指定分區(qū)集合內的數據進行整體sum操作。

以上就是rank,over partition函數的基本使用方法,希望對大家有所幫助。

相關文章

  • Oracle的directory詳細路徑查看、創(chuàng)建及修改方法

    Oracle的directory詳細路徑查看、創(chuàng)建及修改方法

    directory對象所定義的路徑可以在EM中的“管理”-“方案”-“目錄對象”進行查看、創(chuàng)建或修改,這篇文章主要介紹了Oracle的directory詳細路徑查看、創(chuàng)建及修改,需要的朋友可以參考下
    2024-03-03
  • Oracle 8i在P4上的安裝

    Oracle 8i在P4上的安裝

    Oracle 8i在P4上的安裝...
    2007-03-03
  • Oracle數據庫中通用的函數實例詳解

    Oracle數據庫中通用的函數實例詳解

    OracleSQL提供了用于執(zhí)行特定操作的專用函數,這些函數大大增強了SQL語言的功能,下面這篇文章主要給大家介紹了關于Oracle數據庫中通用函數的相關資料,需要的朋友可以參考下
    2022-03-03
  • Oracle 中 table 函數的應用淺析

    Oracle 中 table 函數的應用淺析

    表函數可接受查詢語句或游標作為輸入參數,并可輸出多行數據。這篇文章主要介紹了Oracle 中 table 函數的應用淺析,需要的朋友可以參考下
    2016-12-12
  • Oracle存儲過程和自定義函數詳解

    Oracle存儲過程和自定義函數詳解

    本篇文章主要介紹了Oracle存儲過程和自定義函數詳解,有需要的可以了解一下。
    2016-11-11
  • Oracle參數設置教程之set和reset的實用案例

    Oracle參數設置教程之set和reset的實用案例

    最近在學習oracle,學習中遇到了一些覺著有必要記錄下的內容,所以下面這篇文章主要給大家介紹了關于Oracle參數設置教程之set和reset實用案例的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起看看吧。
    2017-10-10
  • Oracle查看表操作歷史記錄并恢復數據的方法

    Oracle查看表操作歷史記錄并恢復數據的方法

    Oracle是一種廣泛應用于企業(yè)級數據庫系統(tǒng)的軟件,但在操作過程中可能會發(fā)生誤刪除數據的情況,這時就需要進行數據恢復操作,這篇文章主要給大家介紹了關于Oracle查看表操作歷史記錄并恢復數據的相關資料,需要的朋友可以參考下
    2023-08-08
  • Oracle?range時間范圍自動分區(qū)的創(chuàng)建方式

    Oracle?range時間范圍自動分區(qū)的創(chuàng)建方式

    這篇文章主要介紹了Oracle??range時間范圍自動分區(qū)的創(chuàng)建方式,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • Oracle集群 diagwait的問題記錄

    Oracle集群 diagwait的問題記錄

    這篇文章主要給大家介紹了關于Oracle集群diagwait的問題的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-01-01
  • Oracle中實現MySQL show index from table命令SQL腳本分享

    Oracle中實現MySQL show index from table命令SQL腳本分享

    這篇文章主要介紹了Oracle中實現MySQL show index from table命令SQL腳本分享,本文只是模擬了Mysql中的show index from table命令,需要的朋友可以參考下
    2014-10-10

最新評論

平定县| 平凉市| 班戈县| 渭南市| 柳林县| 娱乐| 公安县| 油尖旺区| 皮山县| 东乡| 来安县| 达日县| 郓城县| 简阳市| 三台县| 襄樊市| 汕尾市| 望江县| 保康县| 宁安市| 磐石市| 克东县| 蓝田县| 慈利县| 息烽县| 德格县| 蒙阴县| 当涂县| 界首市| 镇原县| 黎平县| 炉霍县| 平乡县| 彩票| 山丹县| 大连市| 临湘市| 泽普县| 丽水市| 大理市| 同心县|