程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> SQL查詢排名函數實例,SQL排名函數實例

SQL查詢排名函數實例,SQL排名函數實例

編輯:更多數據庫知識

SQL查詢排名函數實例,SQL排名函數實例


在實際開發中經常會遇到計算某個字段的排名的情況

如下表:totak_sales

https://www.aspphp.online/shujuku/UploadFiles_3118/201701/2017012118330363.jpg

現在又如此要求:按sales的逆序排序,要求添加一個sales_rank字段,顯示排名順序

方法:

復制代碼 代碼如下:SELECT a1.Name, a1.Sales, COUNT(a2.sales) Sales_Rank
FROM Total_Sales a1, Total_Sales a2
WHERE a1.Sales <= a2.Sales or (a1.Sales=a2.Sales and a1.Name = a2.Name)
GROUP BY a1.Name, a1.Sales
ORDER BY a1.Sales DESC, a1.Name DESC;

結果:

https://www.aspphp.online/shujuku/UploadFiles_3118/201701/2017012118330381.jpg
或:

復制代碼 代碼如下:SELECT a1.Name, a1.Sales, COUNT(a2.sales) Sales_Rank
FROM Total_Sales a1, Total_Sales a2
WHERE a1.Sales < a2.Sales or (a1.Sales=a2.Sales and a1.Name = a2.Name)
GROUP BY a1.Name, a1.Sales
ORDER BY a1.Sales DESC, a1.Name DESC;

結果:

https://www.aspphp.online/shujuku/UploadFiles_3118/201701/2017012118330399.jpg

由上面的方案,我們可以繼續推測,如何選出某項來呢?

比如排名為5的那項內容:

復制代碼 代碼如下:SELECT * from
(
SELECT a1.Name, a1.Sales, COUNT(a2.sales) Sales_Rank
FROM Total_Sales a1, Total_Sales a2
WHERE a1.Sales < a2.Sales or (a1.Sales=a2.Sales and a1.Name = a2.Name)
GROUP BY a1.Name, a1.Sales
ORDER BY a1.Sales DESC, a1.Name DESC
) as tab WHERE tab.sales_rank=5;

https://www.aspphp.online/shujuku/UploadFiles_3118/201701/2017012118330321.jpg

當然,此時如果將順序修改為3的話,就不能很好的查找到內容了,這個還是一個弊端,需進行修改,待續

以上就是SQL查詢排名函數實例的全部內容,希望能給大家一個參考,也希望大家多多支持幫客之家。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved