2011-09-28 18 views
7

Ho una domanda particolare che riguarda MySQL. Si prega di dare un'occhiata alla query e il set di risultati di seguito:MySQL COUNT(), SUM() e 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 
---------------- 

mi piacerebbe ottenere la somma dei conteggi, quindi in questo caso mi piacerebbe vedere ' 1412 'nella riga successiva o in una nuova colonna, non ha molta importanza.

Qualche consiglio? Ho provato ad applicare sottoquery a questo, ma non sono riuscito a trovare una soluzione adeguata.

Acclamazioni

risposta

4

nell'istruzione SELECT, questo dovrebbe funzionare (non testato).

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. molte grazie – Tamas

7

WITH ROLLUP fa quello che ti serve?

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

Su una riga alla fine:

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 semplice 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; 

John