MySQL使用dense_rank()函数报错

MySQL在使用dense_rank()函数的时候报错 照着网上抄都不行

SQL语句

SELECT
    student_id,
    total_score,
    DENSE_RANK() over ( ORDER BY total_score DESC ) AS rank 
FROM
    stu;

报错截图

img

数据表中相关字段

img

要不就是版本不支持用窗口函数,要不就是 rank这个和里面的关键字冲突需要加上引号,不然实在看不出啥问题了了


WITH STU AS(
                        SELECT 1 student_id,98 total_score FROM DUAL
                        UNION ALL
                        SELECT 2 ,95  FROM DUAL
                        UNION ALL
                        SELECT 3,93   FROM DUAL
                        UNION ALL
                        SELECT 4 ,85  FROM DUAL
                        UNION ALL
                        SELECT 5 ,80  FROM DUAL
)


SELECT
    student_id,
    total_score,
    DENSE_RANK() over ( ORDER BY total_score DESC ) PX
FROM
    stu;
今天我也遇到了同样的问题,解决方法是给排序后的函数重新定义别名,不能定义为RANK,这里用的是PX,建立了一个名为stu的临时表,能正常运行。