首页 > 解决方案 > 按区域(北,东,西,南)sql分组邮政编码

问题描述

我有法国的这种类型的数据,我想使用 SQL 将这些邮政编码分为南/北/东/西 4 个类别。这可能吗?我可以说,如果纬度 > 48 且经度 > 2.5,则该区域称为东北。如果纬度 >48 且经度<2.5,则该区域称为西北部。如果纬度<48 和经度>2.5,则该地区称为东南,纬度 <48 和经度 <2.5,则该地区称为 South Oues 谢谢

+---------+------------------------+------------+-------------------+
| zipcode |          city          |  latitude  |     longitude     |
+---------+------------------------+------------+-------------------+
|   13210 | Saint-Rémy-de-Provence | 43.788652  | 4.831343          |
|   13800 | Istres                 | 43.506196  | 4.99036599999999  |
|   37000 | Tours                  | 47.3951208 | 0.693232599999988 |
|   78480 | Verneuil-sur-Seine     | 48.9796889 | 1.97723380000002  |
|   95150 | Taverny                | 49.0243127 | 2.22085059999995  |
|   91300 | Massy                  | 48.73027   | 2.28712500000006  |
|   69800 | Saint-Priest           | 45.7168398 | 4.92662189999999  |
|   17870 | breuil magne           | 45.9840161 | -0.9589952        |
|   76100 | Rouen                  | 49.4341826 | 1.08828110000002  |
|   38500 | Voiron                 | 45.3520189 | 5.57151959999999  |
|   31500 | Toulouse               | 43.6010501 | 1.46503830000006  |
|   78400 | Chatou                 | 48.9027528 | 2.15630869999995  |
|   94000 | Créteil                | 48.7968017 | 2.44876620000002  |
|   69700 | Loire-sur-Rhône        | 45.5604967 | 4.80611650000003  |
+---------+------------------------+------------+-------------------+

标签: sql

解决方案


我可以说,如果纬度 > 48 且经度 > 2.5,则该区域称为东北。如果纬度 >48 且经度<2.5,则该区域称为西北部。如果纬度<48 且经度>2.5,则该区域称为东南,纬度<48 且经度<2.5,则该区域称为西南。

这听起来像一个case表达:

select . . . ,
       (case when latitude >= 48 and longitude > 2.5
             then 'Northeast'
             when latitude <= 48 and longitude > 2.5
             then 'Southeast'
             when latitude > 48 and longitude <= 2.5
             then 'Northwest'
             when latitude < 48 and longitude <= 2.5
             then 'Southwest'
        end)

推荐阅读