首頁  >  文章  >  資料庫  >  mysql中關於排名函數的具體介紹

mysql中關於排名函數的具體介紹

黄舟
黄舟原創
2017-08-09 15:33:111892瀏覽

對MySQL資料表中的某一欄位進行排名


1.原始的表格數據如下圖。 done_seconds為完成的時間,需求為根據該欄位對每個資料進行排名。

mysql中關於排名函數的具體介紹


#2.輸入下列SQL語句:

SELECT A.*,@rank:=@rank+1 AS pm FROM (SELECT * FROM task_news_user_done_list ORDER BY done_seconds) A, (SELECT  @rank:=0) B

mysql中關於排名函數的具體介紹

3.執行該條語句後,查詢出來的結果中,加入了pm欄位。該欄位的值就是根據done_seconds進行排序的結果。注意,升序,降序的問題。

mysql中關於排名函數的具體介紹

4.除了單一欄位外,還可以對平均值進行排序。如對上表相同user_email的done_seconds的平均值進行排序,可用以下sql語句:

SELECT A.*,@rank:=@rank+1 AS pm 
FROM 
(SELECT user_email, AVG(done_seconds) AS done_seconds FROM task_news_user_done_list GROUP BY user_email ORDER BY done_seconds) A, (SELECT  @rank:=0) B

mysql中關於排名函數的具體介紹

mysql中關於排名函數的具體介紹


#.排序後結果如下圖。此時的排名就是所有相同user_email的done_seconds進行的平均值排名。

mysql中關於排名函數的具體介紹

#6.當然也可以依需求加入where等限制條件。如下圖。


覺得有用的讚。


######################################### #

以上是mysql中關於排名函數的具體介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn