Итоги и промежуточные итоги с SQL синтаксисом «сумма» и «больше» - PullRequest
0 голосов
/ 19 марта 2020

В моей таблице SQL есть столбцы "страна" и "we200326". Столбец "we200326" содержит только записи "1" или "NULL".

Я пытаюсь получить общее количество всех "1" в столбце "we200326" и общее количество по стране. Я написал следующее утверждение, но оно выдает ошибку, но я не знаю, что я сделал неправильно (я очень новичок в этом):

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

Я искал похожие ошибки и обнаружил несколько (каждый раз это была простая синтаксическая ошибка, такая как пробел или запятая или около того). Я пробовал несколько версий, но не смог решить свою проблему, следуя этим инструкциям. Любая помощь будет оценена.

1 Ответ

0 голосов
/ 19 марта 2020

Оконные функции доступны только в MySQL 8.0.

В более ранних версиях одним из вариантов является использование подзапросов:

select 
    country,
    wewe200326,
    (select sum(we200326) from table_name) total,
    (select sum(we200326) from table_name t1 where t1.country = t.country) country_total
from table_name t
order by country_total, country
...