欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
oracle中聚合函數rank和dense_rank的使用

聚合函數RANK 和 dense_rank 主要的功能是計算一組數值中的排序值。

在9i版本之前,只有分析功能(analytic ),即從一個(gè)查詢(xún)結果中計算每一行的排序值,是基于order_by_clause子句中的value_exprs指定字段的。
其語(yǔ)法為:
RANK ( ) OVER ( [query_partition_clause] order_by_clause )

在9i版本新增加了合計功能(aggregate),即對給定的參數值在設定的排序查詢(xún)中計算出其排序值。這些參數必須是常數或常值表達式,且必須和ORDER BY子句中的字段個(gè)數、位置、類(lèi)型完全一致。
其語(yǔ)法為:
RANK ( expr [, expr]... ) WITHIN GROUP
( ORDER BY
  expr [ DESC | ASC ] [NULLS { FIRST | LAST }]
  [, expr [ DESC | ASC ] [NULLS { FIRST | LAST }]]...
)

例子1:
有表Table內容如下
COL1  COL2
   1  1
   2  1
   3  2
   3  1
   4  1
   4  2
   5  2
   5  2
   6  2
 
分析功能:列出Col2分組后根據Col1排序,并生成數字列。比較實(shí)用于在成績(jì)表中查出各科前幾名的信息。
SELECT a.*,RANK() OVER(PARTITION BY col2 ORDER BY col1) "Rank" FROM table a;
結果如下:
COL1  COL2  Rank
   1  1     1
   2  1     2
   3  1     3
   4  1     4
   3  2     1
   4  2     2
   5  2     3
   5  2     3
   6  2     5

例子2:
TABLE:A (科目,分數)

數學(xué),80
語(yǔ)文,70
數學(xué),90
數學(xué),60
數學(xué),100
語(yǔ)文,88
語(yǔ)文,65
語(yǔ)文,77


現在我想要的結果是:(即想要每門(mén)科目的前3名的分數)


數學(xué),100
數學(xué),90
數學(xué),80
語(yǔ)文,88
語(yǔ)文,77
語(yǔ)文,70
那么語(yǔ)句就這么寫(xiě):

select * from (select rank() over(partition by 科目 order by 分數 desc) rk,a.* from a) t
where t.rk<=3;

例子3:

合計功能:計算出數值(4,1)在Orade By Col1,Col2排序下的排序值,也就是col1=4,col2=1在排序以后的位置
SELECT RANK(4,3) WITHIN GROUP (ORDER BY col1,col2) "Rank" FROM table;
結果如下:
Rank
4

dense_rank與rank()用法相當,但是有一個(gè)區別:dence_rank在并列關(guān)系是,相關(guān)等級不會(huì )跳過(guò)。rank則跳過(guò)

例如:表

    A B C
 a          liu          wang
 a          jin          shu
 a          cai          kai
 b          yang      du
 b          lin          ying
 b          yao        cai
 b          yang      99

例如:當rank時(shí)為:

select m.a,m.b,m.c,rank() over(partition by a order by b) liu from test3 m

 A          B             C          LIU
 a          cai          kai          1
 a          jin           shu        2
 a          liu           wang     3
 b          lin           ying        1
 b          yang      du           2
 b          yang      99           2
 b          yao        cai           4

而如果用dense_rank時(shí)為:

select m.a,m.b,m.c,dense_rank() over(partition by a order by b) liu from test3 m

 A          B             C          LIU
 a          cai          kai          1
 a          jin           shu        2
 a          liu           wang     3
 b          lin           ying        1
 b          yang      du           2
 b          yang      99           2
 b          yao        cai           3


本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Oracle SQL中的RANK
oracle中分組排序函數用法
..over
rank,dense
rank,dense_rank,row_number區別
Oracle高級查詢(xún)之OVER (PARTITION BY ..)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久