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

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中關于排名函數的具體介紹

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

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


6.當然還可以根據需要加入where等限制條件。如下圖。

覺得有用的點下贊。

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


? 版權聲明
THE END
喜歡就支持一下吧
點贊15 分享