2011-09-28 204 views
7

我有一个关于MySQL的特殊问题。请看看查询和结果设置如下:MySQL COUNT(),SUM()和GROUP BY

SELECT COUNT(c.Population) AS c, c.City AS cc 
FROM City c 
GROUP BY c.City 
ORDER BY c.City; 

261 | Bristol 
---------------- 
910 | London 
---------------- 
241 | Manchester 
---------------- 

我想获得计数的总和,所以在这种情况下,我想看看“ 1412'在下一行,或在一个新的专栏中,这并不重要。

有什么建议吗?我试图应用子查询,但我找不到合适的解决方案。

干杯

回答

4

在select语句,这应该工作(未经测试)。

SELECT 
    COUNT(c.Population) AS c, 
    c.City AS cc, 
    (SELECT COUNT(c.Population) FROM City) as TotalPop 
FROM City c 
GROUP BY c.City 
ORDER BY c.City; 
+0

辉煌。非常感谢 – Tamas

7

是否WITH ROLLUP做你所需要的?

SELECT 
     COUNT(c.Population) AS c, 
     c.City AS cc 
FROM City c 
GROUP BY c.City 
WITH ROLLUP; 
0

在末一行:

SELECT * 
    FROM 
(
    SELECT 0 as total 
     , COUNT(c.Population) AS c 
     , c.City AS cc 
     FROM City c GROUP BY c.City 

    union 

    SELECT 1 as total 
     , COUNT(c.Population) AS c 
     , null AS cc 
     FROM City 
) myquery 
ORDER BY total 
     , city 

ORDER BY c.City;

0

用简单的UNION;

select count(d.Population) as c, 'TOTAL' as cc from City d 

union 

SELECT COUNT(c.Population) AS c, c.City AS cc 
FROM City c 
GROUP BY c.City 
ORDER BY c.City; 

约翰