我有一个areas
表,如下所示:
name | lat | lng
有许多重复的区域。 lat
和lng
是double
类型
atown | 80.66 | 40.1
atown | 80.51 | 40.53
atown | 81.0 | 41.0
atown | 10.0 | 20.0
btown | 70.0 | 30.0
目前我这样做:
SELECT * FROM `areas` GROUP BY `name`, `lat`, `lng`
但我想要做的是这是一组进一步基于lat
和lng
+/- 2
是可以接受的,可以将它们分组为一个区域:
所以我应该得到以下结果:
atown | 80.66 | 40.1
atown | 10.0 | 20.0
btown | 70.0 | 30.0
提前非常感谢你。
答案 0 :(得分:1)
您可以简单地使用distinct和floor功能。如果你想按2分组,你需要将数字置于最低值并从最低值中减去%2的值。
mysql> select distinct
-> name,
-> floor(lat) - floor(lat)%2 lat,
-> floor(lng) - floor(lng)%2 lng
-> from areas
-> ;
+-------+------+------+
| name | lat | lng |
+-------+------+------+
| atown | 80 | 40 |
| atown | 10 | 20 |
| btown | 70 | 30 |
+-------+------+------+
答案 1 :(得分:0)
+/- 2
表示逐步,因此您可以将lat
或lng
除以4作为组值。
SELECT
name,
floor(lat/4),
floor(lng/4),
lat, --or max(lat) or min(lat)
lng --or max(lng) or min(lng)
FROM
areas
GROUP BY
name,
floor(lat/4),
floor(lng/4)