rank()

wj8zmpe1  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(404)

在做了研究并发现mariadb支持公共表表达式(cte)之后,我尝试按此进行排序,但得到了一个错误:
分析中发现3处错误。
以前发现了一个别名(靠近183号位置的“位置”)
应为别名(靠近“”位置182)
无法识别的关键字(靠近183号位置的“位置”)
sql语法有错误;检查与您的mariadb服务器版本相对应的手册,以获得正确的语法,以便在第1行的销售限制0,25'位置使用near'(按年份划分订单描述)位置
所以我猜错误就在等级之后。怎么了?这是我的密码。
表列是

employee | year | sale
----------------------
SELECT
employee,
year,
sale,
RANK() OVER (PARTITION BY
                 year
             ORDER BY
                 sale DESC
            ) position
FROM
sales;
t9aqgxwy

t9aqgxwy1#

相当于 rank() 具有相关子查询的是:

select s.*,
       (select count(*) + 1
        from sales s2
        where s2.year = s.year and s2.sale > s.sale
       ) as position
from sales s;
tzdcorbm

tzdcorbm2#

如果有人遇到同样的问题,要知道cte只支持10.2版

相关问题