說好的考過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。
留言列表