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