如何对 COUNT 个值求和
How to sum COUNT values
我是 SQLite 的新手,所以请原谅我问了一些愚蠢的问题。
从包含飞机数据的 table 的数据库中,我可以使用现有查询计算制造商数据的记录:
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() 工作。关于这个计算聚合的问题似乎使用了在 tables.
中找到的值
与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。
我是 SQLite 的新手,所以请原谅我问了一些愚蠢的问题。 从包含飞机数据的 table 的数据库中,我可以使用现有查询计算制造商数据的记录:
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() 工作。关于这个计算聚合的问题似乎使用了在 tables.
中找到的值与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。