1)。
簡介和范圍 該白皮書介紹了 Microsoft SQL Server 2005 Beta 2 中的 Transact-SQL 的幾個新的增強功能。這些新功能可以改善您的表達能力、查詢性能以及錯誤管理功能。本文重點介紹幾個概念新穎且互相聯系的增強功能,並且通過實際示例演示這些功能。本文並未討論所有新增的 Transact-SQL 功能。
預備知識:目標讀者應該能夠熟練使用 Transact-SQL 進行特定查詢以及將其作為 Microsoft SQL Server 2000 中應用程序的組件。
改善查詢的表達能力和 DRI 支持 本節介紹下列新增的關系功能和增強功能:
新增的排序函數
新增的基於常見表表達式 (CTE) 的遞歸查詢
新增的 PIVOT 和 APPLY 關系運算符
聲明性引用完整性 (DRI) 增強
排序函數
SQL Server 2005 引入了四個新的排序函數:ROW_NUMBER、RANK、DENSE_RANK 和 NTILE。這些新函數使您可以有效地分析數據以及向查詢的結果行提供排序值。您可能發現這些新函數有用的典型方案包括:將連續整數分配給結果行,以便進行表示、分頁、計分和繪制直方圖。
Speaker Statistics 方案
下面的 Speaker Statistics 方案將用來討論和演示不同的函數和它們的子句。大型計算會議包括三個議題:數據庫、開發和系統管理。十一位演講者在會議中發表演講,並且為他們的講話獲得范圍為 1 到 9 的分數。結果被總結並存儲在下面的 SpeakerStats 表中:
USE tempdb -- or your own test database
CREATE TABLE SpeakerStats
(
speaker VARCHAR(10) NOT NULL PRIMARY KEY,
track VARCHAR(10) NOT NULL,
score INT NOT NULL,
pctfilledevals INT NOT NULL,
numsessions INT NOT NULL
)
SET NOCOUNT ON
INSERT INTO SpeakerStats VALUES('Dan', 'Sys', 3, 22, 4)
INSERT INTO SpeakerStats VALUES('Ron', 'Dev', 9, 30, 3)
INSERT INTO SpeakerStats VALUES('Kathy', 'Sys', 8, 27, 2)
INSERT INTO SpeakerStats VALUES('Suzanne', 'DB', 9, 30, 3)
INSERT INTO SpeakerStats VALUES('Joe', 'Dev', 6, 20, 2)
INSERT INTO SpeakerStats VALUES('Robert', 'Dev', 6, 28, 2)
INSERT INTO SpeakerStats VALUES('Mike', 'DB', 8, 20, 3)
INSERT INTO SpeakerStats VALUES('Michele', 'Sys', 8, 31, 4)
INSERT INTO SpeakerStats VALUES('Jessica', 'Dev', 9, 19, 1)
INSERT INTO SpeakerStats VALUES('Brian', 'Sys', 7, 22, 3)
INSERT INTO SpeakerStats VALUES('Kevin', 'DB', 7, 25, 4)
每個演講者都在該表中具有一個行,其中含有該演講者的名字、議題、平均得分、填寫評價的與會者相對於參加會議的與會者數量的百分比以及該演講者發表演講的次數。本節演示如何使用新的排序函數分析演講者統計數據以生成有用的信息。
語義
全部四個排序函數都遵循類似的語法模式:
排序函數
() OVER(
[PARTITION BY ]
ORDER BY )
該函數只能在查詢的兩個子句中指定 ― 在 SELECT 子句或 ORDER BY 子句中