我正在尝试编写一个 MySQL 查询,以查看哪些邮政编码对我们的客户来说最常出现,并且需要帮助来完成它。我的 select 语句末尾的 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
最佳答案
将 GROUP_CONCAT
与 DISTINCT
一起使用。使用 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
关于每个办公室邮政编码的 MySQL 查询频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37018648/