探討SQL Server 2005的評(píng)價(jià)函數(shù)(3)_Mssql數(shù)據(jù)庫(kù)教程
教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!
推薦:SQL SERVER中易混淆的數(shù)據(jù)類型數(shù)據(jù)類弄是數(shù)據(jù)的一種屬性,表示數(shù)據(jù)所表示信息的類型。任何一種計(jì)算機(jī)語(yǔ)言都定義了自己的數(shù)據(jù)類型。當(dāng)然,不同的程序語(yǔ)言都具有不同的特點(diǎn),所定義的數(shù)據(jù)類型的各類和名稱都或多或少有些不同。
RANK和DENSE_RANK函數(shù)都能夠使用相同的評(píng)價(jià)計(jì)數(shù)級(jí)。例如,使用下列查詢:| SELECT c.Name,o.DateOrdered,tab.TotalOrderAmount, RANK() OVER (ORDER BY TotalOrderAmount DESC) AS BestCustomerFROM vwTotalAmountBilledPerOrder AS tab INNER JOIN Orders AS o ON o.OrderID = tab.OrderID INNER JOIN Customers AS c ON c.CustomerID = o.CustomerID |
這個(gè)語(yǔ)句將返回如下表所示的結(jié)果:
| Name | DateOrdered | TotalOrderAmount | BestCustomer |
| Bob | 12/1/2005 | 12649.9900 | 1 |
| Darren | 1/2/2006 | 620.0000 | 2 |
| Bob | 12/19/2005 | 265.8500 | 3 |
| Tito | 12/22/2005 | 14.9500 | 4 |
| Bruce | 1/5/2006 | 14.9500 | 5 |
| Tito | 12/18/2005 | 12.4400 | 6 |
| Bruce | 1/4/2006 | 9.9900 | 7 |
| Lee Ann | 1/3/2006 | 8.5000 | 8 |
| ... | |||
注意,具有相同數(shù)量的兩個(gè)訂單是怎樣都被評(píng)價(jià)為#4的。RANK和DENSE_RANK之間的不同之處在于,在平級(jí)的結(jié)果后他們是如何重新開(kāi)始計(jì)數(shù)的。RANK繞過(guò)盡可能多的平級(jí)的結(jié)果。在我們上面的示例中,因?yàn)橛袃蓚(gè)結(jié)果綁定在#4上,因此跟隨其后的#5被跳過(guò)而評(píng)價(jià)等級(jí)以#6繼續(xù)。另一方面,DENSE_RANK從下一個(gè)整數(shù)繼續(xù)。如果我們?cè)谏厦娴牟樵冎惺褂煤瘮?shù)名DENSE_RANK代替RANK,那么Tito在2005年12月18日相應(yīng)于單價(jià)$12.44的訂單評(píng)價(jià)將是#5。
類似于ROW_NUMBER函數(shù),RANK和DENSE_RANK函數(shù)都能使用可選的PARTITION BY語(yǔ)句。
五、 使用NTILE函數(shù)對(duì)評(píng)價(jià)結(jié)果進(jìn)行分組
SQL Server 2005新引入的最后一個(gè)與T-SQL函數(shù)相關(guān)的評(píng)價(jià)函數(shù)是NTILE(int)。NTILE象其它的評(píng)價(jià)函數(shù)一樣操作,但是它能夠把結(jié)果分成組,每組中相應(yīng)相同評(píng)價(jià)結(jié)果的記錄。你可以使用NTILE函數(shù)把結(jié)果分解成兩組、三組或四組等,如下例所示:
| SELECT ProductID,Name,Price,NTILE(4) OVER (ORDER BY Price DESC) as QuartileFROM Produts |
這個(gè)語(yǔ)句將返回如下表所示的結(jié)果:
| ProductID | Name | Price | Quartile |
| 8 | Desk | 495.0000 | 1 |
| 10 | Executive Chair | 295.0000 | 1 |
| 9 | Chair | 125.0000 | 2 |
| 5 | Mouse | 14.9500 | 2 |
| 6 | Mousepad | 9.9900 | 3 |
| 11 | Scissors | 8.5000 | 3 |
| 4 | Stapler | 7.9500 | 4 |
| 3 | Binder | 1.9500 | 4 |
在隨本文下載的演示程序中,我提供了一個(gè)例子,它使用了一個(gè)具有NTILE函數(shù)的視圖來(lái)允許用戶有選擇地查看各種分組的最大訂單量。
六、 結(jié)論
在本文中,我們探討了SQL Server 2005中的四個(gè)新函數(shù)的用法。這四個(gè)新函數(shù)分別是:ROW_NUMBER,RANK,DENSE_RANK和NTILE。與SQL Server 2000使用的舊技術(shù)相比,它們使得返回評(píng)價(jià)結(jié)果更為容易。然而,這些函數(shù)僅僅是SQL Server 2005中所提供的新的T-SQL特征中的極少的一部分。
分享:SQL Server 中易混淆的數(shù)據(jù)類型近來(lái)在做數(shù)據(jù)庫(kù)設(shè)計(jì),有時(shí)候真弄不清SQL2000里的數(shù)據(jù)類型,所以摘了這篇文章。 摘自“藍(lán)色理想”。 (1)char、varchar、text和nchar、nvarchar、ntext char和varchar的長(zhǎng)
相關(guān)Mssql數(shù)據(jù)庫(kù)教程:
- sql 語(yǔ)句練習(xí)與答案
- 深入C++ string.find()函數(shù)的用法總結(jié)
- SQL Server中刪除重復(fù)數(shù)據(jù)的幾個(gè)方法
- sql刪除重復(fù)數(shù)據(jù)的詳細(xì)方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無(wú)法查看數(shù)據(jù)庫(kù),提示 無(wú)法為該請(qǐng)求檢索數(shù)據(jù) 錯(cuò)誤916解決方法
- SQLServer日志清空語(yǔ)句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲(chǔ)過(guò)程參數(shù)的用法實(shí)例詳解
Mssql數(shù)據(jù)庫(kù)教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫(kù)教程推薦
- 兩條經(jīng)典SQL語(yǔ)句
- 解決SQL Server數(shù)據(jù)庫(kù)占用過(guò)多內(nèi)存的方法
- SQL Server 2005數(shù)據(jù)加密技術(shù)應(yīng)用研究
- 逐行掃描 為你講解幾個(gè)基本SQLPLUS命令
- 講解數(shù)據(jù)庫(kù)調(diào)優(yōu)與程序員相關(guān)的幾個(gè)方面
- 如何在應(yīng)用環(huán)境中構(gòu)造最優(yōu)的數(shù)據(jù)庫(kù)模式
- 解讀sql中獲得部分時(shí)間的方法
- 解讀數(shù)據(jù)庫(kù)的一些常識(shí)
- SQLServer2005重建索引前后對(duì)比分析
- 談SQL Server數(shù)據(jù)庫(kù)管理常用的SQL和T-SQL語(yǔ)句
猜你也喜歡看這些
- Mysql的主從數(shù)據(jù)庫(kù)沒(méi)有同步的解決辦法
- Mysql DNS反向解析導(dǎo)致連接超時(shí)過(guò)程分析(skip-name-resolve)
- mysql登錄遇到ERROR 1045問(wèn)題解決方法
- 解析MySQL中INSERT INTO SELECT的使用
- MySQL的重裝問(wèn)題解決方法
- MySql中把一個(gè)表的數(shù)據(jù)插入到另一個(gè)表中的實(shí)現(xiàn)代碼
- MySQL自增列插入0值的解決方案
- Java連接MySql的詳細(xì)介紹
- MySQL筆記之系統(tǒng)信息函數(shù)詳解
- 網(wǎng)站模板:如何捕獲和記錄SQL Server中發(fā)生的死鎖
- 相關(guān)鏈接:
- 教程說(shuō)明:
Mssql數(shù)據(jù)庫(kù)教程-探討SQL Server 2005的評(píng)價(jià)函數(shù)(3)
。