sql中 > 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 '(PARTITION BY ST.操作日期) AS 行数, COUNT(ST.订单号) OVER(PARTITION BY ' at line 4 为什么报错,怎么修改
时间: 2023-06-28 17:15:52 浏览: 137
SQL 错误提示
这个SQL语句报错的原因是因为MySQL数据库不支持在窗口函数(OVER函数)中使用COUNT函数时同时指定PARTITION BY子句。
如果您想要计算分组的行数和状态划分的行数,可以分别使用两个不同的子查询来实现。例如,可以使用以下SQL语句:
```
SELECT ST.操作日期, ST.状态划分, 行数, COUNT(ST.订单号) AS 状态行数
FROM 表名 AS ST
INNER JOIN
(SELECT 操作日期, COUNT(*) AS 行数 FROM 表名 GROUP BY 操作日期) AS T1
ON ST.操作日期 = T1.操作日期
GROUP BY ST.操作日期, ST.状态划分, 行数;
```
上述SQL语句中,首先使用一个子查询计算每个操作日期的行数,然后再使用INNER JOIN子句将该子查询的结果与原始表格进行连接。最后再使用GROUP BY子句按照操作日期和状态划分进行分组,并计算每个状态划分的行数。其中,COUNT函数只在SELECT语句中使用一次,不需要在窗口函数中使用。
需要注意的是,在使用GROUP BY子句时,必须将所有非聚合列(例如ST.操作日期)都包含在GROUP BY子句中。
阅读全文