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