【问题标题】:MySQL Group By zip codeMySQL Group By 邮政编码
【发布时间】:2012-02-24 22:00:13
【问题描述】:

我有一个保存订阅信息的表。有些邮寄邮政编码是五位数,而有些是 9(55025 与 55025-4056)。我想运行一个查询来计算每个邮政编码中的订阅总数,但需要将 9 位数字与它们匹配的 5 位数字分组。

SELECT zip, COUNT(id) AS total FROM subscriptions WHERE status = 'A' GROUP BY zip

但很明显,它将 55025 和 55025-4056 读取为两个不同的邮政编码。如果 55025 有 100 条记录,而 55025-4056 有 10 条记录,我希望结果显示 55025 = 110 条记录。如何执行此查询以按邮政编码的前 5 位进行分组?

谢谢

【问题讨论】:

    标签: mysql group-by zipcode


    【解决方案1】:
    SELECT LEFT(zip,5) zip, COUNT(id) AS total
    FROM subscriptions WHERE status = 'A'
    GROUP BY LEFT(zip,5); 
    

    【讨论】:

      【解决方案2】:

      你可以GROUP BY表达式,选择你最喜欢的字符串函数来完成这项工作 http://dev.mysql.com/doc/refman/5.0/en/string-functions.html

      SELECT zip, COUNT(id) AS total FROM subscriptions
      WHERE status = 'A'
      GROUP BY LEFT( zip, 5 );
      

      【讨论】:

        【解决方案3】:
        SELECT zip, COUNT(id) AS total 
        FROM subscriptions 
        WHERE status = 'A' 
        GROUP BY SUBSTRING(zip, 1, 5)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-04-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多