【发布时间】:2020-03-19 10:34:46
【问题描述】:
在我的 SQL 表中,我有“国家”和“we200326”列。 “we200326”列仅包含“1”或“NULL”条目。
我正在尝试获取“we200326”列中所有“1”的总数以及国家/地区的总数。我写了以下语句,但它给出了一个错误,但我不知道我做错了什么(我对此很陌生):
SELECT country, we200326,
(SUM(we200326) OVER () AS Total)
(SUM(we200326) OVER (PARTITION BY country) AS CountryTotal)
FROM table_name
ORDER BY CountryTotal, Country;
我得到的错误是这样的:
MySQL said: Documentation
#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 'OVER () AS Total)
(SUM(we200326) OVER (PARTITION BY country) AS CountryTotal)
' at line 2
我搜索了类似的错误并发现了几个(每次都是一个简单的语法错误,如空格或逗号左右)我尝试了几个版本,但在按照这些说明操作时无法解决我的问题。任何帮助,将不胜感激。
【问题讨论】:
-
您好 J.K.,欢迎来到 Stack Overflow。您在第一个窗口总和后缺少一个逗号。此外,总和周围的括号是多余的。
-
谢谢 - 哇超快的答案!我添加了逗号并删除了多余的括号,但现在我得到以下信息:#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 2 行的 '() AS Total, SUM(we200326) OVER (PARTITION BY country) AS CountryTotal FROM k' 附近使用正确的语法
-
您正在运行哪个版本的 MySQL (
select version())?窗口函数需要 MySQL 8.0。 -
我正在通过 PHPMyAdmin 界面运行 5.7.29-32-log 版本
-
请更新您的问题。或者删除它。
标签: mysql sql group-by sum window-functions