close

說好的考過70-461後要分享一下心得,現在就開始發一系列我在擔任ETL工程師時候所學到T-SQL技巧與準備70-461這張證照時候覺得要注意的幾個要點。

在70-461考試中常見到上面標題這幾個function,當時在準備70-461時候也被搞得七葷八素,因此特別分享希望對於正在準備此張證照的人有些幫助。

首先source table data如下:

1.首先注意語法

XXX() over(order by column_name desc)

XXX : 可以替換為row_number / rank....

order by column_name desc : 這裡則是為必填,原因是因為必須依照此來排名。

 

2.ROW_NUMBER():

ROW_NUMBER()是依照salary這個欄位的值來排名,而黃框部分兩個人的salary相同,

ROW_NUMBER()並不會給予相同排名,而是往下遞增。

 

3.RANK()

RANK()是依照salary這個欄位的值來排名,而黃框部分兩個人的salary相同,

RANK()會給予相同排名,並且給予salary=60000那個欄位的排名為4,

因為前面有兩人排名相同。

 

4.DENSE_RANK()

DENSE_RANK()是依照salary這個欄位的值來排名,而黃框部分兩個人的salary相同,

DENSE_RANK()會給予相同排名,並且給予salary=60000那個欄位的排名為3,

因為前面有兩人排名相同,這裡與RANK()不同的是不會因為前有欄位的值相同而去略過後面排名。

 

5.NTILE()

NTILE() 是依照salary這個欄位的值來排名,且依據NTILE ()內的值為最大排名。

for example 這裡我給ntile(2) 意思就是排名最大為2。

sql 從salary中挑了一個值大於此值設其排名為1,小於此值設排名為2。

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 melomelo1988 的頭像
    melomelo1988

    melo 唐

    melomelo1988 發表在 痞客邦 留言(0) 人氣()