中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

知(zhi)方(fang)可補不足~row_number,rank,dense_rank,ntile排名函數的(de)用法

回到目錄

這篇文章介紹(shao)SQL中(zhong)4個很有意思的函數,我稱它的行標函數,它們是(shi)row_number,rank,dense_rank和ntile,下面(mian)分別進行介紹(shao)。

一(yi)  row_number:它為數(shu)據表加一(yi)個叫“行標示”的(de)列(lie),它在數(shu)據表中(zhong)是連續的(de),我們必須按著(zhu)某個順序把表排(pai)序之后,才能使用row_number,看下列(lie)例(li)子:

SELECT   row_number() OVER ( ORDER BY SalePrice ) AS row ,
                    *
          FROM      Product

結果表被加上了行號:

這個row_number在(zai)平常(chang)用的最多,它(ta)可以用來實現數據表的分頁功能(neng),看下(xia)面代(dai)碼

 SELECT *
 FROM   ( SELECT    row_number() OVER ( ORDER BY SalePrice ) AS row ,
                    *
          FROM      Product
        ) AS Result
 WHERE  Result.row BETWEEN 1 AND 2 
 

它的含義是從第一條記錄開始,取出2條記錄,如果你想一頁顯示10條記錄,可以使用BETWEEN 1 AND 10,如果想得到第二次的10條,那條件就變成BETWEEN 11 AND 20

二   rank:類(lei)型于row_number,不(bu)同(tong)之處(chu)在(zai)于,它會(hui)對order by 的(de)字(zi)(zi)段進行(xing)(xing)處(chu)理,如果這(zhe)個(ge)字(zi)(zi)段值相同(tong),那么(me),行(xing)(xing)號保(bao)持不(bu)變,如代碼:

 SELECT RANK() OVER ( ORDER BY SalePrice ) AS row ,
        SalePrice ,
        ProductID ,
        ProductName
 FROM   Product

結果如下:

三   dense_rank:與(yu)rank類型,不同之(zhi)處在于(yu)行號是否保(bao)留(liu)一個位(wei)(wei)置(zhi),rank對保(bao)留(liu)這個位(wei)(wei)置(zhi),即上面圖中,row的(de)值由(you)1直(zhi)接變(bian)為3,因為它(ta)的(de)1出現了兩次,所以(yi)為2保(bao)留(liu)了一個位(wei)(wei)置(zhi),而dense_rank不會保(bao)留(liu)2這個位(wei)(wei)置(zhi),即實(shi)現的(de)行號2其(qi)實(shi)是排在了第3位(wei)(wei),如代碼:

 SELECT DENSE_RANK() OVER ( ORDER BY SalePrice ) AS row ,
        SalePrice ,
        ProductID ,
        ProductName
 FROM   Product

結果如下:

四   ntile:為裝桶(tong)(tong)操作,ntile(桶(tong)(tong)數)它在運行之前,先(xian)確定產生的桶(tong)(tong)數,然后根據桶(tong)(tong)數去生成行標,如代(dai)碼(ma):

 SELECT NTILE(1) OVER ( ORDER BY SalePrice ) AS ntile ,
        SalePrice ,
        ProductID ,
        ProductName
 FROM   Product

結果如下:

如果設為(wei)NTILE(3),那結(jie)果就為(wei):

當(dang)我們面對一個復雜(za)的(de)問(wen)題(ti)時,考驗的(de)不是你是否能(neng)解(jie)決(jue)(jue),而是你采取哪種方式去解(jie)決(jue)(jue)以及代碼的(de)性能(neng)問(wen)題(ti)。

 回到目錄

posted @ 2013-09-26 14:13  張占嶺  閱讀(981)  評論(1)    收藏  舉報