可以使用通配符进行GROUP BY吗?

时间:2019-04-05 13:36:47

标签: mysql

所以我有一张表格,描述了哪个公司服务于哪个领域(见下文)。

+-------+---------+------------+----------------+----------+--------------+
| 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可以实现吗?

0 个答案:

没有答案