2011-09-28 28 views
7

Tengo una pregunta en particular que trata sobre MySQL. Por favor, eche un vistazo a la consulta y el resultado establece a continuación:MySQL COUNT(), SUM() y 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 
---------------- 

me gustaría llegar a la suma de los cargos, por lo que en este caso me gustaría ver ' 1412 'en la siguiente fila, o en una nueva columna, realmente no importa.

¿Algún consejo? He intentado aplicar subconsultas a esto, pero no he podido encontrar una solución adecuada.

Saludos

Respuesta

4

en la instrucción de selección, esto debería funcionar (no probado).

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

brillante. Muchas gracias – Tamas

7

¿WITH ROLLUP hace lo que necesita?

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

En una fila al final:

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

Con simple UNIÓN;

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; 

John