欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > SqlServer 2005的排名函數使用小結

SqlServer 2005的排名函數使用小結

熱門標簽:江西穩定外呼系統供應商 電話機器人錄音師薪資 智能電銷機器人教育 中國地圖標注省份用什么符號 孝感銷售電銷機器人廠家 高德地圖標注電話怎么沒了 奧維地圖標注字體大小修改 無錫梁溪公司怎樣申請400電話 北京智能外呼系統供應商家
盡管從技術上講,其它排名函數的計算與ROW_NUMBER類似,但它們的的實際應用卻少很多。RANK和DENSE——RANK主要用于排名和積分。NTILE更多地用于分析。

先創建一個示例表:

復制代碼 代碼如下:

SET NOCOUNT ON
USE [tempdb]
IF OBJECT_ID('Sales')IS NOT NULL
DROP TABLE sales

CREATE TABLE Sales
(
empid VARCHAR(10) NOT NULL PRIMARY KEY,
mgrid VARCHAR(10) NOT NULL,
qty INT NOT NULL
)

INSERT INTO [Sales] (empid,[mgrid],[qty])VALUES('A','Z',300)
INSERT INTO [Sales] (empid,[mgrid],[qty])VALUES('B','X',100)
INSERT INTO [Sales] (empid,[mgrid],[qty])VALUES('C','X',200)
INSERT INTO [Sales] (empid,[mgrid],[qty])VALUES('D','Y',200)
INSERT INTO [Sales] (empid,[mgrid],[qty])VALUES('E','Z',250)
INSERT INTO [Sales] (empid,[mgrid],[qty])VALUES('F','Z',300)
INSERT INTO [Sales] (empid,[mgrid],[qty])VALUES('G','X',100)
INSERT INTO [Sales] (empid,[mgrid],[qty])VALUES('H','Y',150)
INSERT INTO [Sales] (empid,[mgrid],[qty])VALUES('I','X',250)
INSERT INTO [Sales] (empid,[mgrid],[qty])VALUES('J','Z',100)
INSERT INTO [Sales] (empid,[mgrid],[qty])VALUES('K','Y',200)

CREATE INDEX idx_qty_empid ON [Sales](qty,empid)
CREATE INDEX idx_mgrid_qty_empid ON sales(mgrid,qty,empid)

--
SELECT * FROM [Sales]


復制代碼 代碼如下:

--排名函數
/**/

--Sql Server 2005排名函數只能用于查詢的SELECT 和 ORDER BY 子句中。排名計算(無論你使用什么方法)的最佳索引是在分區列、排序列、覆蓋列上創建的索引。
--行號:是指按指定順序為查詢結果集中的行分配的連續整數。在后面的節中,將描述Sql Server 2005與之前版本中計算行號的工具與方法。
SELECT empid,qty,ROW_NUMBER()OVER(ORDER BY qty)AS RowNum
FROM [Sales]
ORDER BY [qty]
--確定性
SELECT empid,qty,ROW_NUMBER()OVER(ORDER BY qty)AS RowNum,ROW_NUMBER()OVER(ORDER BY qty,empid)AS RowNum2
FROM [Sales]
ORDER BY qty,empid
--分區
SELECT mgrid,empid,qty,ROW_NUMBER()OVER(PARTITION BY mgrid ORDER BY qty,empid)AS RowNum
FROM [Sales]
ORDER BY mgrid,qty
--=====之前2000版本基于集合的方法實現
--唯一排序列:給定一個唯一的分區 + 排序列組合 (如下例的唯一的分區是empid,排序列empid
SELECT empid,(SELECT COUNT(*) FROM [Sales] AS s2 WHERE s2.empid=s1.empid)AS rowNum
FROM [Sales] s1 ORDER BY [empid]
--查看執行計劃,(順序是從上至下,從右至左看)會發現有兩個不同的運算符使用了聚集索引。第一個是完整掃描以返回所有的行(這個例子是11行);第二個運算符先為每個外部執行查找,再執行局部掃描,以完成統計。還記得嗎?影響數據處理查詢性能的主要因素通常中I/O。這種方式在小數據量時不明顯,但當數據量較大時(大于千條),由于每一條記錄都需要將全部表掃描一次,使用這種方法掃描的總行數將是1+2+3+N,對于整體上100000行的表,你一共會掃描50005000行。順便提一下,計算前N個正整數之各的公式是(N+N的平方)/2。
--看示例即了解到的.
USE [AdventureWorks]
SET STATISTICS TIME ON
SELECT salesorderid,ROW_NUMBER()OVER(ORDER BY salesorderid)AS rownum
FROM sales.[SalesOrderHeader]

SELECT salesorderid,(SELECT COUNT(*) FROM sales.[SalesOrderHeader] b WHERE b.salesorderid=a.salesorderid)AS rownum
FROM sales.[SalesOrderHeader] a
ORDER BY [salesorderid]

/* 結果:
(31465 行受影響)

SQL Server 執行時間:
CPU 時間 = 47 毫秒,占用時間 = 674 毫秒。

(31465 行受影響)

SQL Server 執行時間:
CPU 時間 = 133094 毫秒,占用時間 = 134030 毫秒。

可想而知,新排名函數的憂化方面是很不錯的.
*/

--不唯一排序列和附加屬性:當排序列不唯一時,你可以通過引入一個附加屬性使它唯一。以下查詢按qty和empid的順序生成行號
SELECT empid,qty,(SELECT COUNT(*) FROM [Sales] s2 WHERE s2.qtys1.qty OR ((s2.qty=s1.qty AND s2.empid=s1.empid)))AS rowNum
FROM [Sales] s1 ORDER BY qty,empid
--以上示例qty為排序列,empid為附加列。要統計具有相同或更小排序列表值(qty+empid)的行,在子查詢中使用以下表達式
--inner_qty outer_qty OR (inner_qty=outer_qty AND inner_empid = outer_empid)

--沒有附加屬性的不唯一序列:當你要根據不唯一排序列分配行號,而且不使用附加屬性時,在SQL Server 2005之前的版本中用基于集合的方法解決該問題就更復雜了。通過以下代碼清單創建并填充該表。
IF OBJECT_ID('T1')IS NOT NULL
DROP TABLE T1

CREATE TABLE T1(col1 VARCHAR(5))
INSERT INTO t1(col1) VALUES('A')
INSERT INTO t1(col1) VALUES('A')
INSERT INTO t1(col1) VALUES('A')
INSERT INTO t1(col1) VALUES('B')
INSERT INTO t1(col1) VALUES('B')
INSERT INTO t1(col1) VALUES('C')
INSERT INTO t1(col1) VALUES('C')
INSERT INTO t1(col1) VALUES('C')
INSERT INTO t1(col1) VALUES('C')
INSERT INTO t1(col1) VALUES('C')
--該解決方案必須兼容SQL Server 2000,所以你不能使用ROW_NUMBER函數。而且,此方案必須是標準的。
--在這個解決方案中,將第一次使用一個非常重要的關鍵技術--用數字輔助表生成副本。以下創建Nums表并用l=n=1000000之內的1000000個整數填充該表。
--第一步是,通過按col對行分組來“壓縮”數據,為每個組返回重復數(該組中的行數),還要用子查詢返回基表中具有最小排序值的行數。
SELECT col1,COUNT(*) AS dups,(SELECT COUNT(*) FROM [T1]B WHERE b.col1a.col1)AS smaller FROM [T1]A GROUP BY [col1]
--下一步是擴展行數,即,為每一行創建連續編號的副本。
SELECT col1,dups,smaller,n FROM (
SELECT col1,COUNT(*) AS dups,(SELECT COUNT(*) FROM [T1]B WHERE b.col1a.col1)AS smaller FROM [T1]A GROUP BY [col1]) AS D, Nums
WHERE n=[dups]
--觀察上表的結果,理解它是如何產生行號的。
--行號可以表示為,具有更小排序值的行數加上同一排序值組內的行號,即 N + smaller。下面列出最終解決方案。
SELECT n+smaller AS rowNum, col1 FROM (
SELECT col1,COUNT(*) AS dups,(SELECT COUNT(*) FROM [T1]B WHERE b.col1a.col1)AS smaller FROM [T1]A GROUP BY [col1]) AS D, Nums
WHERE n=[dups]
ORDER BY [rowNum]

--創建一個填充了100W行數的Nums表
GO
IF OBJECT_ID('dbo.Nums') IS NOT NULL
DROP TABLE dbo.Nums;
GO
CREATE TABLE dbo.Nums(n INT NOT NULL PRIMARY KEY);
DECLARE @max AS INT, @rc AS INT;
SET @max = 1000000;
SET @rc = 1;

INSERT INTO Nums VALUES(1);
WHILE @rc * 2 = @max
BEGIN
INSERT INTO dbo.Nums SELECT n + @rc FROM dbo.Nums;
SET @rc = @rc * 2;
END

INSERT INTO dbo.Nums
SELECT n + @rc FROM dbo.Nums WHERE n + @rc = @max;
GO

--在生產環境中也是有用的,例可能常用到的,數據分頁.
CREATE PROC usp_GetPage @iRowCount INT ,@iPageNo INT
AS
SELECT * FROM (
SELECT ROW_NUMBER()OVER(ORDER BY productid ASC)RowNum,* FROM production.product)OrderData
WHERE RowNum BETWEEN @iRowCount*(@iPageNo-1)+1 AND @iRowCount*@iPageNo
ORDER BY [ProductID] ASC
GO

-- 使用
EXEC usp_getpage 10,20
您可能感興趣的文章:
  • SQL2005 四個排名函數(row_number、rank、dense_rank和ntile)的比較
  • SQL查詢排名函數實例
  • 實例講解sql server排名函數DENSE_RANK的用法
  • sql四大排名函數之ROW_NUMBER、RANK、DENSE_RANK、NTILE使用介紹

標簽:通化 海北 阜陽 齊齊哈爾 臨滄 那曲 荊州 泰州

巨人網絡通訊聲明:本文標題《SqlServer 2005的排名函數使用小結》,本文關鍵詞  SqlServer,2005,的,排名,函數,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SqlServer 2005的排名函數使用小結》相關的同類信息!
  • 本頁收集關于SqlServer 2005的排名函數使用小結的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    欧美不卡一区二区三区| 久久99久久久欧美国产| www.亚洲免费av| 69xxx免费| 久久综合色婷婷| 日本va欧美va精品发布| 白嫩情侣偷拍呻吟刺激| 欧美日韩免费一区二区三区视频| 日韩理论片在线| 成人午夜短视频| 国产精品99久久久久久成人| 国产色产综合色产在线视频| 国产呦萝稀缺另类资源| 9.1片黄在线观看| 国产视频一区二区三区在线观看| 国产一区二区在线电影| 精品手机在线视频| 久久精品一区四区| 国产精品一区二区无线| 亚洲aaa视频| 日本一二三四高清不卡| 国产成人av电影在线观看| 国产精品视频一区二区三| 国产精品久久久久久亚洲毛片| 国产麻豆视频一区| 在线视频这里只有精品| 国产精品成人午夜| 97成人超碰视| 在线不卡a资源高清| 日韩精品五月天| 久久成人激情视频| 欧美国产精品中文字幕| 成人av网站在线观看免费| 欧美在线观看一区| 天天av天天翘天天综合网色鬼国产| 久久黄色一级视频| 制服丝袜中文字幕一区| 热久久国产精品| 1024在线看片| 国产精品乱码一区二区三区软件| av一二三不卡影片| 欧美挠脚心视频网站| 日本午夜一本久久久综合| 干b视频在线观看| 中文字幕一区二区视频| 久久av一区二区三| 精品国产乱码久久久久久浪潮| 国产美女视频一区| 在线一区二区视频| 人人超碰91尤物精品国产| 久久久久人妻一区精品色| 亚洲免费观看在线观看| 亚洲图片综合网| 国产日韩欧美亚洲| 波多野吉衣在线视频| 日韩免费看网站| 国产99久久久国产精品免费看| 在线视频一区二区三| 日本中文字幕一区| 国产一区二区精彩视频| 亚洲国产人成综合网站| 欧美人与性囗牲恔配| 亚洲欧美另类小说| 国产男男chinese网站| 国产精品久久久久久久久免费相片 | 久久精品在线观看| 91免费在线看| 精品国产免费人成电影在线观看四季 | 毛片av中文字幕一区二区| 亚洲天堂黄色片| 日本亚洲视频在线| 一本一道久久a久久精品| 日韩av午夜在线观看| 精品国产精品国产精品| 青椒成人免费视频| 91成人国产精品| 国产一区二区免费视频| 欧美人与性动xxxx| 韩国成人福利片在线播放| 精品视频一区二区不卡| 国产麻豆91精品| 欧美一区二区三区视频| 不卡的av在线| 亚洲精品在线免费观看视频| 久久发布国产伦子伦精品| 国产欧美一区二区三区网站| 88av在线播放| 亚洲欧美色综合| 丁香激情五月少妇| 午夜影院久久久| 91九色02白丝porn| 国产精品资源站在线| 日韩视频不卡中文| 日本人妻一区二区三区| 国产精品久久久久影院老司| 波多野结衣片子| 亚洲r级在线视频| 91福利在线导航| 国产suv精品一区二区883| 欧美不卡视频一区| 95视频在线观看| 亚洲精品一二三四区| 免费看一级大片| 九九视频精品免费| 日韩一级片在线播放| www.四虎精品| 亚洲精品欧美专区| 久久久久久久久久久久久女过产乱| 精东粉嫩av免费一区二区三区| 9191国产精品| 久久久久国产免费| 亚洲男人天堂av| 一本一本大道香蕉久在线精品 | 精品国产第一区二区三区观看体验| 无码人妻丰满熟妇区毛片蜜桃精品| 国产精品久久久久久久久快鸭 | 26uuuu精品一区二区| 中文字幕 亚洲一区| 亚洲国产欧美另类丝袜| 在线观看成人免费视频| 盗摄精品av一区二区三区| 久久丝袜美腿综合| 法国空姐电影在线观看| 久久福利视频一区二区| 日韩精品中午字幕| 30一40一50老女人毛片| 日本午夜精品视频在线观看 | 欧美日韩成人一区| 日韩精品国产一区| 亚洲午夜电影网| 欧美日本韩国一区| 超碰caoprom| 日韩高清电影一区| 日韩免费视频一区二区| 能免费看av的网站| 久久av老司机精品网站导航| 2021中文字幕一区亚洲| 日本少妇xxxxx| 国产真实乱偷精品视频免| 中文字幕欧美日本乱码一线二线 | 亚洲v国产v欧美v久久久久久| 捆绑紧缚一区二区三区视频| 精品电影一区二区三区| 五月天婷婷丁香网| 国产精品18久久久久久vr| 中文字幕不卡在线观看| 国产成人久久久久| 被黑人猛躁10次高潮视频| 五月婷婷久久综合| 精品少妇一区二区| 成人午夜免费影院| 波多野结衣在线一区| 亚洲最大成人网4388xx| 91精品国产综合久久香蕉麻豆| 亚洲欧美视频在线播放| 国内精品视频一区二区三区八戒| 中文欧美字幕免费| 色婷婷精品久久二区二区蜜臂av| 久久久久无码精品| 日本网站在线观看一区二区三区| 久久久久青草大香线综合精品| 182在线观看视频| 在线观看视频你懂得| 日韩精品乱码av一区二区| 精品播放一区二区| 全网免费在线播放视频入口 | 日韩不卡一区二区| 久久蜜桃香蕉精品一区二区三区| 国产精品一区二区亚洲| 91一区二区三区在线观看| 首页亚洲欧美制服丝腿| 国产亚洲精品久| 欧美日韩在线免费视频| 黄色片在线观看免费| 91免费在线看| 狠狠色综合日日| 亚洲精品日韩一| 亚洲精品一线二线三线| 国产探花在线免费观看| www.17c.com喷水少妇| 国产一区二区美女| 亚洲一区在线免费观看| 久久亚区不卡日本| 欧美综合一区二区三区| 欧美特级黄色录像| 91亚洲男人天堂| 另类欧美日韩国产在线| 亚洲色图欧洲色图| 欧美成人激情免费网| 色婷婷狠狠综合| 久久久久久九九九九九| 免费看的av网站| 国产自产视频一区二区三区| 一区二区三区在线观看网站| 久久久综合网站| 欧美日韩激情一区二区| 男人晚上看的视频| 国产二级一片内射视频播放 | 久久先锋影音av鲁色资源| 欧美性猛片aaaaaaa做受|