MySQL5.6沒有窗口函數,如何使用rank( )排名?


筆者今天在寫MySQL使用rank窗口函數時,報#1064錯誤,仔細檢查后發現並沒有語法錯誤

 

窗口函數

rank()  over ([partition by <列清單>]

order by <排序用列清單>)

 

原因是MySQL5.6版本沒有窗口函數,參考了很多文章,解決方案如下:

 

SELECT
    s.`tableid`,
    s.`板編號`,
    s.`S1`,
    s.`S2`,
    s.`S3`,
    s.`S4`,
    s.`con1`,
    s.`con2`,
    s.`con3`,
    s.`con4`,

-- DENSE_RANK() OVER(PARTITION BY `tableid` ORDER BY `con1`) AS r1
  5.6版本沒有窗口函數,只能用變量來實現--
( SELECT count( DISTINCT con1 ) FROM distance_ratio_mid s2

WHERE s2.tableid = s.tableid AND s2.con1 <= s.con1 ) ranking1 FROM distance_ratio_mid s ORDER BY tableid, con1 DESC;

 

最終實現了分組並列連續排名:

 

 

 

 

 

參考了以下文章:
————————————————
版權聲明:本文為CSDN博主「哲這這」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/u011726005/article/details/94592866

 


還可以參考我的最新博客:

SQL-自鏈接的用法 - Fancy[love] - 博客園 https://www.cnblogs.com/fancy2022/p/15885176.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM