Re: [SQL ] ROW_NUMBER()的用法
: : 2.第二個範例少了PARTITION BY A
: : 那麼當重複出現值的時候
: : 又是怎麼給1~9值??
: row_number() 只是單純地標註行號,如果處理重複值,請改用
: rank() 或 dense_rank() 函數,兩者的差別在於 dense_rank()
: 一定連號,以下列例子來說,97是第三好成績
...
推 s66449:您好 感謝您的回答 不過第2點 還是沒有回到我想要的問題?? 07/25 17:20
→ s66449:想確認一下相同的欄位的話 順號是怎麼決定的 07/25 17:21
→ s66449:您舉的例子只有兩個欄位 順號都是2比較沒甚麼差別 07/25 17:21
→ s66449:但如果再更多欄位的話 那會怎麼排呢 07/25 17:22
什麼是「相同的欄位」? 還有,請問您之前有先問到多個欄位嗎? :)
再說詳細一點了,row_number()只會按照視覺上出現的次序編上列號,
rank() 與 dense_rank() 才會處理相同欄位值的情況,從而出現相同
名次編號的情況。
→ s66449:您舉的例子只有兩個欄位 順號都是2比較沒甚麼差別 07/25 17:21
→ s66449:但如果再更多欄位的話 那會怎麼排呢 07/25 17:22
至於內容重複,如何排列,那就是你的問題了,愛怎麼排,由你決定,
更明確地講,由你給的 order by 決定。例如,總分一樣,由國文成績
決定。
順序決定了,名次也就出來了。
以這次我提的例子,再加上你現在追問的多重欄位,就有可能是這樣:
select ..., rank() over (order by (score * 100 + 國文成績)) as 名次, ...
select ...,
rank() over (partition by 班級, order by (score * 100 + 國文成績)) as 名次,
...
當然啦! 這只是舉例。不過,你一定看得出來,順序與名次,由 order by
決定。因此,「那會怎麼排呢」 :)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.252.126.60
推
07/25 19:53, , 1F
07/25 19:53, 1F
→
07/25 19:53, , 2F
07/25 19:53, 2F
討論串 (同標題文章)