如何对COUNT个值求和

问题描述 投票:0回答:1

我对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

是否有一种方法可以在不删除'GROUP BY'条款的情况下获得计算得出的总计(3504)?我无法使用SUM()和TOTAL()来工作。关于此计数汇总的问题似乎使用表中的值。

sqlite counting
1个回答
0
投票

使用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

请参见demo。或使用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

请参见demo

© www.soinside.com 2019 - 2024. All rights reserved.