在进行研究并发现MariaDB支持通用表表达式(CTE)之后,我试图进行这样的排名,但出现错误:
在分析过程中发现3个错误。
您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册以获取正确的语法,以在第1行的'(PARTITION BY year ORDER BY sale DESC)位置FROM sales LIMIT 0,25'附近使用
因此,我猜该错误仅次于排名。怎么了。这是我的代码。
表列是
employee | year | sale
----------------------
SELECT
employee,
year,
sale,
RANK() OVER (PARTITION BY
year
ORDER BY
sale DESC
) position
FROM
sales;
答案 0 :(得分:0)
如果有人遇到相同的问题,请知道仅从10.2版开始支持CTE
答案 1 :(得分:0)
具有相关子查询的rank()
等效项是:
select s.*,
(select count(*) + 1
from sales s2
where s2.year = s.year and s2.sale > s.sale
) as position
from sales s;