mysql - 使用 CTE 在 mysql 中进行 Rank()

标签 mysql sql mariadb ranking

经过研究并发现 MariaDB 支持通用表表达式 (CTE) 后,我尝试按此排名,但出现错误:

分析过程中发现 3 个错误。

  • 之前已发现别名。 (位置 183 处的“位置”附近)
  • 需要别名。 (位置 182 处的“”附近)
  • 无法识别的关键字。 (位置 183 处的“位置”附近)

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '(PARTITION BY year ORDER BY sale DESC ) position FROM sales LIMIT 0, 25' at line 1

所以我猜测错误就在排名之后。怎么了。这是我的代码。

表格列是

employee | year | sale
----------------------


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

最佳答案

如果有人遇到同样的问题,请注意仅从版本 10.2 开始支持 CTE

关于mysql - 使用 CTE 在 mysql 中进行 Rank(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52785603/

相关文章:

mysql - 显示名称 mysql 中包含 "and"的发布者列表

mysql - 将表从一个 MariaDB 数据库克隆到另一个数据库,包括默认值、索引和触发器?

mysql - 将csv文件导入MySQL中带有外键和主键的3个表

mysql - 分组最大 mysql 查询忽略 NULL 列

php - JQuery 乘以输入值并保存数据(codeigniter)

php - 拉维尔 5.2。数据库表 + 加入更新

php - Laravel 嵌套数组的类型转换

sql - 在 Node 环境中导入 SQL 转储

python - 在 python 中运行的 Sqlite Case 语句

php - 为什么这个 UPDATE 过程更新每一行?