2015年6月9日 星期二

RANK,DENSE_RANK,ROW_NUMBER,Ntile用法

---使用RANK()函數搭配Over子句,遇到相同的值會給相同的排名,其後的排名則會跳過! 
SELECT [書籍編號]
      ,[書籍名稱]
      ,[價格]
      ,[出版公司]
 ,RANK() OVER (ORDER BY [價格]) AS  價格排名
  FROM [dbo].[書籍]
GO

---使用DENSE_RANK()函數搭配Over子句,遇到相同的值會給相同的排名,其後的排名則依序排名,不會跳過!
SELECT [書籍編號]
      ,[書籍名稱]
      ,[價格]
      ,[出版公司]
 ,DENSE_RANK() OVER (ORDER BY [價格]) AS  價格排名
  FROM [dbo].[書籍]
GO


--ROW_NUMBER()此排序函數,將所有紀錄進行排序,每一筆紀錄給定一個序號,不分相同排名!
SELECT [書籍編號]
      ,[書籍名稱]
      ,[價格]
      ,[出版公司]
,ROW_NUMBER() OVER(order BY [價格]) AS 不分排名的編號
  FROM [dbo].[書籍]
GO

--NTile分成3組
SELECT [書籍編號],[書籍名稱],[價格],
CASE NTile(3) OVER (ORDER BY 價格 DESC)
WHEN 1 THEN N'高價位'
WHEN 2 THEN N'中價位'
WHEN 3 THEN N'低價位'
END N'價格分類'
FROM [dbo].[書籍]

沒有留言:

張貼留言