探討SQL Server 2005的評(píng)價(jià)函數(shù)_Mssql數(shù)據(jù)庫教程
教程Tag:暫無Tag,歡迎添加,賺取U幣!
推薦:SQL SERVER中易混淆的數(shù)據(jù)類型數(shù)據(jù)類弄是數(shù)據(jù)的一種屬性,表示數(shù)據(jù)所表示信息的類型。任何一種計(jì)算機(jī)語言都定義了自己的數(shù)據(jù)類型。當(dāng)然,不同的程序語言都具有不同的特點(diǎn),所定義的數(shù)據(jù)類型的各類和名稱都或多或少有些不同。
一、 簡(jiǎn)介在2005年11月份,微軟發(fā)行了三種新產(chǎn)品系列:Visual Studio 2005,SQL Server 2005和.NET框架2.0(它包括ASP.NET 2.0)。SQL Server 2005是微軟自從其上一個(gè)主要發(fā)行版本SQL Server 2000以來最新版本的數(shù)據(jù)庫平臺(tái)。在過去五年的發(fā)展中,SQL Server中加入了大量的新特征,所有這些新內(nèi)容都被總結(jié)到微軟網(wǎng)站的一篇文章《What's New in SQL Server 2005?》中。使用SQL Server 2005作為后端數(shù)據(jù)庫構(gòu)建基于web應(yīng)用程序的開發(fā)者很可能會(huì)對(duì)這些新特征抱有濃厚的興趣,這些新特征包括新的T-SQL改進(jìn),更好的Visual Studio集成,與CLR/.NET框架的集成,以及SQL Server 2005 Management Studio應(yīng)用程序(它是SQL Server 2000的企業(yè)管理器的一個(gè)更為"平滑"的版本)。
與以前的SQL Server 2000相比, 2005中的T-SQL改進(jìn)使得編寫某些類型的查詢極為容易。在SQL Server 2005中,T-SQL語法更為精練、可讀和易于理解。
在本文中,我們將專門探討SQL Server 2005的評(píng)價(jià)函數(shù),它們大大簡(jiǎn)化了對(duì)查詢結(jié)果進(jìn)行評(píng)價(jià)的過程。
二、 數(shù)據(jù)模型和評(píng)價(jià)結(jié)果基礎(chǔ)
在我們分析如何使用普通查詢模式之前,讓我們首先創(chuàng)建一個(gè)能夠運(yùn)行這些查詢的數(shù)據(jù)模型。在本文中,我使用SQL Server 2005 Express版本來實(shí)現(xiàn)我的演示,并且包括了一個(gè)數(shù)據(jù)庫和一個(gè)ASP.NET 2.0網(wǎng)站(請(qǐng)參考本文相應(yīng)的完整源碼。就象Visual Studio一樣,SQL Server發(fā)行中也一同加雜了其它一些不同的版本。其中,Express版本是一個(gè)針對(duì)業(yè)余愛好者、學(xué)生等群體的免費(fèi)版本。如果你下載和安裝Visual Web Developer(Visual Studio針對(duì)web開發(fā)者的Express版本),那么你可以選擇一同安裝SQL Server 2005 Express版本)。
對(duì)于本文中的示例,我們將使用一個(gè)含有產(chǎn)品、銷售人員(雇員)、顧客和訂單信息的數(shù)據(jù)庫。我們使用五個(gè)表來建模:Customers,Employees,Products,Orders和OrderItems。其中,Customers,Employees和Products表分別包含每一個(gè)顧客,雇員和產(chǎn)品信息的行記錄數(shù)據(jù)。每當(dāng)一個(gè)顧客進(jìn)行購買活動(dòng),一條新記錄被添加到Orders表中,其中的信息指示該顧客實(shí)現(xiàn)了購買、該雇員進(jìn)行的這一銷售活動(dòng)及訂單的日期。其中,OrderItems映射訂單中的每一件產(chǎn)品,產(chǎn)品的數(shù)量和價(jià)格總值(假定較大的購買量可以打折)。下圖展示了這些表(及字段)以及它們之間的關(guān)系。
如圖所展示的,這個(gè)OrderItems在Orders和Products表之間建立一個(gè)對(duì)多對(duì)的連接。 |
當(dāng)構(gòu)建報(bào)告或分析數(shù)據(jù)時(shí),用戶或管理員經(jīng)常希望看到以某種方式對(duì)數(shù)據(jù)的評(píng)價(jià)信息。例如,你的老板可能想要一個(gè)報(bào)告來顯示賣路最好的前十項(xiàng),或在第三個(gè)季度銷售部中實(shí)現(xiàn)最大收入的前三名銷售人員。更復(fù)雜的情況可能是僅返回第3到第5個(gè)評(píng)價(jià)排名的銷售人員。在SQL Server 2000中,返回最高排名項(xiàng)的查詢可以通過使用TOP或ROWCOUNT關(guān)鍵字來實(shí)現(xiàn)。為了檢索一個(gè)特定評(píng)價(jià)子集,你需要使用一種"派生表"(或者是一種基于視圖的手段)。
SQL Server 2005中引入了四個(gè)新的評(píng)價(jià)函數(shù):ROW_NUMBER,RANK,DENSE_RANK和NTILE。盡管這些與SQL Server 2000所提供的函數(shù)相比是一個(gè)明顯的進(jìn)步,但是這些函數(shù)的使用仍然存在一些限制(要求使用派生表或視圖來實(shí)現(xiàn)功能更為強(qiáng)大的應(yīng)用程序)。下面讓我們分析一下每一個(gè)函數(shù)。
三、 使用ROW_NUMBER函數(shù)計(jì)算行數(shù)
這個(gè)ROW_NUMBER函數(shù)把一個(gè)序數(shù)值賦給每一個(gè)返回的記錄,該序數(shù)值依賴于一個(gè)特定的與這個(gè)函數(shù)一起使用的ORDER BY語句。函數(shù)ROW_NUMBER的語法是:ROW_NUMBER() OVER([partition] ORDER BY子句)。例如,下列查詢將返回從最貴的到最便宜的產(chǎn)品,對(duì)每一種產(chǎn)品按價(jià)格進(jìn)行評(píng)價(jià):
| SELECT ProductID,Name,Price, ROW_NUMBER() OVER(ORDER BY Price DESC) As PriceRankFROM Products |
這個(gè)語句的執(zhí)行結(jié)果如下表所示:
分享:SQL Server 中易混淆的數(shù)據(jù)類型近來在做數(shù)據(jù)庫設(shè)計(jì),有時(shí)候真弄不清SQL2000里的數(shù)據(jù)類型,所以摘了這篇文章。 摘自“藍(lán)色理想”。 (1)char、varchar、text和nchar、nvarchar、ntext char和varchar的長
相關(guān)Mssql數(shù)據(jù)庫教程:
- sql 語句練習(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 無法查看數(shù)據(jù)庫,提示 無法為該請(qǐng)求檢索數(shù)據(jù) 錯(cuò)誤916解決方法
- SQLServer日志清空語句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲(chǔ)過程參數(shù)的用法實(shí)例詳解
Mssql數(shù)據(jù)庫教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫教程推薦
- 兩條經(jīng)典SQL語句
- 解決SQL Server數(shù)據(jù)庫占用過多內(nèi)存的方法
- SQL Server 2005數(shù)據(jù)加密技術(shù)應(yīng)用研究
- 逐行掃描 為你講解幾個(gè)基本SQLPLUS命令
- 講解數(shù)據(jù)庫調(diào)優(yōu)與程序員相關(guān)的幾個(gè)方面
- 如何在應(yīng)用環(huán)境中構(gòu)造最優(yōu)的數(shù)據(jù)庫模式
- 解讀sql中獲得部分時(shí)間的方法
- 解讀數(shù)據(jù)庫的一些常識(shí)
- SQLServer2005重建索引前后對(duì)比分析
- 談SQL Server數(shù)據(jù)庫管理常用的SQL和T-SQL語句
猜你也喜歡看這些
- Mysql的主從數(shù)據(jù)庫沒有同步的解決辦法
- Mysql DNS反向解析導(dǎo)致連接超時(shí)過程分析(skip-name-resolve)
- mysql登錄遇到ERROR 1045問題解決方法
- 解析MySQL中INSERT INTO SELECT的使用
- MySQL的重裝問題解決方法
- MySql中把一個(gè)表的數(shù)據(jù)插入到另一個(gè)表中的實(shí)現(xiàn)代碼
- MySQL自增列插入0值的解決方案
- Java連接MySql的詳細(xì)介紹
- MySQL筆記之系統(tǒng)信息函數(shù)詳解
- 網(wǎng)站模板:如何捕獲和記錄SQL Server中發(fā)生的死鎖
- 相關(guān)鏈接:
- 教程說明:
Mssql數(shù)據(jù)庫教程-探討SQL Server 2005的評(píng)價(jià)函數(shù)
。