mysql使用count和distinct count

时间:2012-02-27 19:20:39

标签: mysql sql count distinct

我之前被问过这个问题,而且无法回答它一直困扰着我。

让我们说我们有一张客户及其居住城市的桌子。

如果我想查询唯一的城市数量,以及每个城市出现的次数,那该怎么办?

更清楚:

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

答案可能很简单,我的思绪现在只是糊涂了!

3 个答案:

答案 0 :(得分:3)

这将为每个城市返回一行,其中包含城市名称和城市出现的次数:

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
    

答案 1 :(得分:2)

为此使用分组。

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

答案 2 :(得分:1)

这是用于选择不同城市的sql:

select distinct city from Clients;

这是用于选择名称的sql以及有多少名称:

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