【问题标题】:MySQL Query Frequency of Zip Codes per Offices每个办公室邮政编码的 MySQL 查询频率
【发布时间】:2016-05-04 04:42:40
【问题描述】:

我正在尝试编写一个 MySQL 查询,以查看哪些邮政编码最常出现在我们的客户中,并且需要帮助来完成它。我的选择语句末尾的 office 字段可以是每个邮政编码 1 到 10 种可能性。

我将如何解决此查询以获取最常用的邮政编码以及 10 个可能的办公室中哪些恰好在该邮政编码中有一个位置?

SELECT SUBSTRING(zip_code, 1, 5) AS zip, 
COUNT(*) AS freq, office
FROM customer_billing 
WHERE status != 'deleted'
GROUP BY zip
ORDER BY freq DESC

我正在寻找的示例输出:

zip     freq     office
----    ----     ----
92101    450     office_A, office_B
02124    300     office_A, office_C, office_D
07713    110     office_B

【问题讨论】:

    标签: mysql sql database count frequency


    【解决方案1】:

    GROUP_CONCATDISTINCT 一起使用。使用DISTINCT 是必要的,因为对于给定的邮政编码,给定的办公室可能会出现多次。

    SELECT SUBSTRING(zip_code, 1, 5), COUNT(*) AS freq,
        GROUP_CONCAT(DISTINCT office ORDER BY office DESC SEPARATOR ',')
    FROM customer_billing
    WHERE status != 'deleted'
    GROUP BY SUBSTRING(zip_code, 1, 5)
    ORDER BY freq DESC
    

    【讨论】:

      【解决方案2】:

      您可以使用group_concat

      此函数返回一个字符串结果,其中包含连接的非 NULL 来自一个组的值。如果没有非 NULL 值,则返回 NULL。 完整的语法如下:

      SELECT SUBSTRING(zip_code, 1, 5) AS zip, 
      COUNT(*) AS freq, GROUP_CONCAT(office)
      FROM customer_billing 
      WHERE status != 'deleted'
      GROUP BY zip
      ORDER BY freq DESC
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-23
        • 2013-12-10
        • 1970-01-01
        • 1970-01-01
        • 2021-12-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多