探討SQL Server 2005的評價函數_Mssql數據庫教程
教程Tag:暫無Tag,歡迎添加,賺取U幣!
推薦:SQL SERVER中易混淆的數據類型數據類弄是數據的一種屬性,表示數據所表示信息的類型。任何一種計算機語言都定義了自己的數據類型。當然,不同的程序語言都具有不同的特點,所定義的數據類型的各類和名稱都或多或少有些不同。
一、 簡介在2005年11月份,微軟發行了三種新產品系列:Visual Studio 2005,SQL Server 2005和.NET框架2.0(它包括ASP.NET 2.0)。SQL Server 2005是微軟自從其上一個主要發行版本SQL Server 2000以來最新版本的數據庫平臺。在過去五年的發展中,SQL Server中加入了大量的新特征,所有這些新內容都被總結到微軟網站的一篇文章《What's New in SQL Server 2005?》中。使用SQL Server 2005作為后端數據庫構建基于web應用程序的開發者很可能會對這些新特征抱有濃厚的興趣,這些新特征包括新的T-SQL改進,更好的Visual Studio集成,與CLR/.NET框架的集成,以及SQL Server 2005 Management Studio應用程序(它是SQL Server 2000的企業管理器的一個更為"平滑"的版本)。
與以前的SQL Server 2000相比, 2005中的T-SQL改進使得編寫某些類型的查詢極為容易。在SQL Server 2005中,T-SQL語法更為精練、可讀和易于理解。
在本文中,我們將專門探討SQL Server 2005的評價函數,它們大大簡化了對查詢結果進行評價的過程。
二、 數據模型和評價結果基礎
在我們分析如何使用普通查詢模式之前,讓我們首先創建一個能夠運行這些查詢的數據模型。在本文中,我使用SQL Server 2005 Express版本來實現我的演示,并且包括了一個數據庫和一個ASP.NET 2.0網站(請參考本文相應的完整源碼。就象Visual Studio一樣,SQL Server發行中也一同加雜了其它一些不同的版本。其中,Express版本是一個針對業余愛好者、學生等群體的免費版本。如果你下載和安裝Visual Web Developer(Visual Studio針對web開發者的Express版本),那么你可以選擇一同安裝SQL Server 2005 Express版本)。
對于本文中的示例,我們將使用一個含有產品、銷售人員(雇員)、顧客和訂單信息的數據庫。我們使用五個表來建模:Customers,Employees,Products,Orders和OrderItems。其中,Customers,Employees和Products表分別包含每一個顧客,雇員和產品信息的行記錄數據。每當一個顧客進行購買活動,一條新記錄被添加到Orders表中,其中的信息指示該顧客實現了購買、該雇員進行的這一銷售活動及訂單的日期。其中,OrderItems映射訂單中的每一件產品,產品的數量和價格總值(假定較大的購買量可以打折)。下圖展示了這些表(及字段)以及它們之間的關系。
如圖所展示的,這個OrderItems在Orders和Products表之間建立一個對多對的連接。 |
當構建報告或分析數據時,用戶或管理員經常希望看到以某種方式對數據的評價信息。例如,你的老板可能想要一個報告來顯示賣路最好的前十項,或在第三個季度銷售部中實現最大收入的前三名銷售人員。更復雜的情況可能是僅返回第3到第5個評價排名的銷售人員。在SQL Server 2000中,返回最高排名項的查詢可以通過使用TOP或ROWCOUNT關鍵字來實現。為了檢索一個特定評價子集,你需要使用一種"派生表"(或者是一種基于視圖的手段)。
SQL Server 2005中引入了四個新的評價函數:ROW_NUMBER,RANK,DENSE_RANK和NTILE。盡管這些與SQL Server 2000所提供的函數相比是一個明顯的進步,但是這些函數的使用仍然存在一些限制(要求使用派生表或視圖來實現功能更為強大的應用程序)。下面讓我們分析一下每一個函數。
三、 使用ROW_NUMBER函數計算行數
這個ROW_NUMBER函數把一個序數值賦給每一個返回的記錄,該序數值依賴于一個特定的與這個函數一起使用的ORDER BY語句。函數ROW_NUMBER的語法是:ROW_NUMBER() OVER([partition] ORDER BY子句)。例如,下列查詢將返回從最貴的到最便宜的產品,對每一種產品按價格進行評價:
| SELECT ProductID,Name,Price, ROW_NUMBER() OVER(ORDER BY Price DESC) As PriceRankFROM Products |
這個語句的執行結果如下表所示:
分享:SQL Server 中易混淆的數據類型近來在做數據庫設計,有時候真弄不清SQL2000里的數據類型,所以摘了這篇文章。 摘自“藍色理想”。 (1)char、varchar、text和nchar、nvarchar、ntext char和varchar的長
相關Mssql數據庫教程:
- sql 語句練習與答案
- 深入C++ string.find()函數的用法總結
- SQL Server中刪除重復數據的幾個方法
- sql刪除重復數據的詳細方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無法查看數據庫,提示 無法為該請求檢索數據 錯誤916解決方法
- SQLServer日志清空語句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲過程參數的用法實例詳解
- 相關鏈接:
- 教程說明:
Mssql數據庫教程-探討SQL Server 2005的評價函數
。