2011-09-28 69 views
7

Tôi có một câu hỏi cụ thể về MySQL. Hãy có một cái nhìn tại các truy vấn và kết quả thiết lập dưới đây:MySQL COUNT(), SUM() và 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 
---------------- 

Tôi muốn để có được những SUM của COUNTgiây, vì vậy trong trường hợp này tôi muốn xem ' 1412 'trong hàng tiếp theo, hoặc trong một cột mới, nó không thực sự quan trọng.

Bạn có lời khuyên nào không? Tôi đã cố gắng áp dụng các truy vấn phụ cho điều này nhưng tôi không thể tìm thấy một giải pháp thích hợp.

Chúc mừng

Trả lời

4

trong tuyên bố chọn, thao tác này sẽ hoạt động (chưa được kiểm tra).

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

Brilliant. Cảm ơn rất nhiều – Tamas

7

WITH ROLLUP làm những gì bạn cần?

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

Trên một hàng ở cuối:

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

Với UNION đơn giả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