【问题标题】:mysql using count, and distinct countmysql 使用计数和不同计数
【发布时间】:2012-02-27 19:20:38
【问题描述】:

之前有人问过我这个问题,一直无法回答,一直困扰着我..

假设我们有一张桌子,上面有客户及其居住城市。

如果我想查询城市的唯一数量,以及每个城市出现的次数。

为了更清楚:

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

答案可能很简单,我现在脑子里一片混乱!

【问题讨论】:

    标签: mysql sql count distinct


    【解决方案1】:

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

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

    城市总数就是查询返回的行数。如果你真的想让它出现在记录集上,我可以想到两种方法(我都不是特别喜欢)。

    1. 联合查询:

      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
      

    【讨论】:

      【解决方案2】:

      为此使用分组依据。

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

      【讨论】:

      • 绝对,非常感谢,不敢相信我想不到!
      【解决方案3】:

      这里是选择不同城市的sql:

      select distinct city from Clients;
      

      这是用于选择名称及其数量的 sql:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-09
        • 2015-06-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多