【发布时间】:2021-12-06 23:23:13
【问题描述】:
根据以下版本检查,我正在使用 MySQL Workbench v8.0.1,但仍然无法使用 RANK()、DENSE_RANK()、WINDOW、OVER、PRECEDING、UNBOUNDED PRECEDING 和v8.0 及更高版本应支持的所有其他内容。
我的查询:
WITH daily_shipping_summary AS
(
SELECT ship_date, SUM(shipping_cost) AS daily_total FROM market_fact_full AS m
INNER JOIN shipping_dimen AS s
ON s.ship_id = m.ship_id
GROUP BY ship_date
)
SELECT *,
SUM(daily_total) OVER w1 AS running_total,
AVG(daily_total) OVER w2 AS moving_avg
FROM daily_shipping_summary
WINDOW w1 AS (ORDER BY daily_total ROWS UNBOUNDED PRECEDING),
w2 AS (ORDER BY daily_total ROWS 6 PRECEDING)
收到以下错误:Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'w1 AS running_total, AVG(daily_total) OVER w2 AS moving_avg FROM daily_shipp' at line 10
谁能帮我解决这个问题?
MySQL Workbench 版本详情:
| Variable_name | Value |
|---|---|
| innodb_version | 8.0.1 |
| protocol_version | 10 |
| tls_version | TLSv1,TLSv1.1 |
| version | 8.0.1-dmr-log |
| version_comment | MySQL Community Server (GPL) |
【问题讨论】:
-
请不要将代码发布为图片。请参阅此处了解更多详细信息原因:meta.stackoverflow.com/questions/285551
-
工作台版本不相关;工作台只是一个客户端。
select version();显示什么? -
还有一个错字。多个WINDOW 就像多个WITH;
WINDOW w1 as (...), w2 as (...),你不要重复WINDOW这个词 -
出现以下错误:始终提供完整且未更改错误消息文本,而不是其中的一部分。如果客户端截断了消息的一部分,则通过 CLI 获取其完整的文本。
-
如果你真的在运行8.0.1的服务器,那是很不寻常和不幸的; 8.0.0 到 8.0.4 版本是开发或发布候选版本,不用于生产用途
标签: mysql window-functions rank dense-rank