所以我有一张表格,描述了哪个公司服务于哪个领域(见下文)。
+-------+---------+------------+----------------+----------+--------------+
| id | comp_id | origin_zip | origin_country | dest_zip | dest_country |
+-------+---------+------------+----------------+----------+--------------+
| 4955 | 2249 | 92100 | FR | % | FR |
| 8328 | 3014 | 92% | FR | 50% | FR |
| 388 | 81 | 976% | FR | % | FR |
| 4842 | 2165 | % | FR | % | FR |
| 5260 | 2504 | % | FR | % | FR |
| 4422 | 1773 | 94% | FR | 84% | FR |
| 5433 | 2671 | % | FR | % | FR |
| 8889 | 3016 | 04% | FR | 04% | FR |
| 4877 | 2200 | % | FR | % | FR |
| 10136 | 3054 | 73% | FR | 19% | FR |
+-------+---------+------------+----------------+----------+--------------+
我将通配符直接保存到表中。这样,当用户给我一个地址时,我可以使用如下查询:
SELECT * FROM company_area WHERE :user_zip LIKE origin_zip AND :user_country = origin_country;
但是,现在我要对该表进行一些统计。我要为一个国家的每个行政区域(由邮政编码中的前两个数字定义)计算我拥有的公司数量。 我想要的是这样的:
+----------------+------------+-------+
| origin_country | origin_zip | total |
+----------------+------------+-------+
| FR | 83% | 1676 |
| FR | 84% | 189 |
| FR | 85% | 339 |
| FR | 86% | 1953 |
| FR | 87% | 24 |
| FR | 88% | 2896 |
| FR | 89% | 1773 |
| FR | 90% | 3023 |
| FR | 91% | 3054 |
| FR | 92% | 386 |
+----------------+------------+-------+
我想GROUP BY origin_country, origin_zip
,但我想GROUP BY
匹配通配符(%
)以某种方式进行分组。
MySQL可以实现吗?