MySQL在使用dense_rank()函数的时候报错 照着网上抄都不行
SQL语句
SELECT
student_id,
total_score,
DENSE_RANK() over ( ORDER BY total_score DESC ) AS rank
FROM
stu;
报错截图
数据表中相关字段
要不就是版本不支持用窗口函数,要不就是 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的临时表,能正常运行。