Как суммировать значения COUNT - PullRequest
0 голосов
/ 14 февраля 2020

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

SELECT Manufacturer, COUNT(Manufacturer) AS Number
FROM aircraft
WHERE Manufacturer like 'Airbus%'
GROUP BY Manufacturer
ORDER BY COUNT(Manufacturer) DESC;

Это дает мне

Manufacturer        Number
Airbus              3473
Airbus Military     29
Airbus Helicopters  2

Есть ли способ получить вычисленный общий итог (3504) в результатах, не удаляя фразу 'GROUP BY'? Я не могу заставить SUM () и TOTAL () работать. Кажется, что вопросы об этом подсчете агрегации используют значения, найденные в таблицах.

1 Ответ

0 голосов
/ 14 февраля 2020

С UNION ALL:

SELECT t.*
FROM (
  SELECT Manufacturer, COUNT(Manufacturer) AS Number
  FROM aircraft
  WHERE Manufacturer like 'Airbus%'
  GROUP BY Manufacturer
  UNION ALL
  SELECT 'Total', COUNT(Manufacturer)
  FROM aircraft
  WHERE Manufacturer like 'Airbus%'
) t
ORDER BY Manufacturer = 'Total', Number DESC

См. Демоверсию . Или с CTE:

WITH cte AS (
  SELECT Manufacturer, COUNT(Manufacturer) AS Number
  FROM aircraft
  WHERE Manufacturer like 'Airbus%'
  GROUP BY Manufacturer  
)  
SELECT t.*
FROM (
  SELECT * FROM cte
  UNION ALL
  SELECT 'Total', SUM(Number) FROM cte
) t  
ORDER BY MAnufacturer = 'Total', Number DESC

См. Демоверсию .

...