2012-02-27 66 views
0

有人問我這個問題早了,不能夠回答這個問題一直困擾着我。MySQL的使用次數,重複計數

比方說,我們有客戶一張桌子和居住的城市。

如果我想查詢唯一的城市數量,以及每個城市出現的次數,該怎麼辦?

更清楚:

Toronto 
Toronto 
Toronto 
Oshawa 
Oshawa 
Distinct cities: 2 
Toronto: 3 
Oshawa: 2 

答案可能是簡單的,我的腦海裏只是玉米粥的時刻!

回答

2

爲此使用一組。

select city, count(*) from clients group by city 
+0

絕對,感謝這麼多,不敢相信我能不想到! – 2012-02-27 19:31:20

1

下面是選擇不同的城市SQL:

select distinct city from Clients; 

這裏的SQL與沿着選擇的名字有多少:

select city, count(*) from Clients group by city; 
2

這將返回一排每個城市,包含城市名稱和城市出現的次數:

SELECT 
    city, 
    COUNT(*) 
FROM clients 
GROUP BY city 

城市總數只是查詢返回的行數。如果你真的希望它出現在記錄集上,我可以想到兩種方式(我並不特別喜歡它)。

  1. UNION查詢:

    SELECT 'CITIES' as city, COUNT(DISTINCT city) 
    FROM clients 
    UNION 
    SELECT city, COUNT(*) 
    FROM clients 
    GROUP BY city 
    
  2. 子查詢的SELECT條款:

    SELECT 
        (SELECT COUNT(DISTINCT city)) AS all, 
        city, 
        COUNT(*) 
    FROM clients 
    GROUP BY city