Возможно, вам лучше делать это в нескольких запросах, а не в одном запросе.
Если вы абсолютно должны сделать это в одном запросе, один из методов - использовать ROLLUP
;другой метод - UNION
результаты нескольких запросов.
ПРИМЕЧАНИЕ. Вы никогда не упоминали имя своей таблицы. Код ниже предполагает, что это Table
Это наш основной запрос. Достаточно просто построить, если вы понимаете GROUP BY
.
SELECT State, City, SUM(Incidents)
FROM Table
GROUP BY City, State;
Использование свертки
Добавление ROLLUP
просто :
SELECT State, City, SUM(Incidents)
FROM Table
GROUP BY City, State WITH ROLLUP;
Использование Union
Если вам нужно объединить запросы с UNION
, вы можете сделать это следующим образом:
- Создайте свои запросы.
- Измените вашзапросы имеют одинаковое количество столбцов в аналогичном порядке
- Применить
UNION
(возможно, UNION ALL
)
-- Build the three queries
-- By City
SELECT State, City, SUM(Incidents)
FROM Table
GROUP BY City, State;
-- By State
SELECT State, SUM(Incidents)
FROM Table
GROUP BY State;
-- Overall
SELECT SUM(Incidents)
FROM Table
; -- No GROUP BY!
Те же запросы, модифицированные так, чтобы иметь одинаковыеколичество столбцов и объединены с UNION
:
SELECT State, City, SUM(Incidents)
FROM Table
GROUP BY City, State
UNION ALL
SELECT State, 'ALL' AS City, SUM(Incidents)
FROM Table
GROUP BY State
UNION ALL
SELECT 'All States' AS State, 'ALL' AS City, SUM(Incidents)
FROM Table
;