我对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()来工作。关于此计数汇总的问题似乎使用表中的值。
使用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。