回覆列表
  • 1 # 使用者64126879034

    rank是oracle分析函式中的一個,主要用法是rank()over(partiton by XX orader by ZZ desc)(分組排序序號)一般用來分組排序,與group by XX order by ZZ 不同的是,它並不影響現有資料。比如:xx zz1 21 31 42 22 6那麼select xx,zz,rank()over(partiton by XX orader by ZZ ) aa from table的結果為xx zz aa1 2 11 3 21 4 32 2 12 6 2partition by可不寫,這樣就是全域性排序,與order by的排序結果相同,只是會存在序號還有其他用法,而且還有很多分析函式,這個可以上網找找,oracle分析函式,裡面的例子好多,希望對你有幫助。

  • 2 # 滴逃逃

    TABLE:S (subject,mark)

    數學,80

    語文,70

    數學,90

    數學,60

    數學,100

    語文,88

    語文,65

    語文,77

    現在我想要的結果是:每門科目的前3名的分數

    數學,100

    數學,90

    數學,80

    語文,88

    語文,77

    語文,70

    那麼語句就這麼寫:

    select * from (select rank() over(partition by subject order by mark desc) rk,S.* from S) T

    where T.rk

    dense_rank與rank()用法相當,但是有一個區別:dence_rank在處理相同的等級時,等級的數值不會跳過。rank則跳過。

    例如:表

    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時為:

    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時為:

    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

  • 中秋節和大豐收的關聯?
  • 英式橄欖球開球規定為什麼?