| USERID | TIME | GPS |
| ------------- | ------------- |
| 用户 A | sometime | (x,y) |
| 用户 A | sometime | (x,y) |
| 用户 A | sometime | (x,y) |
| 用户 A | sometime | (x,y) |
| 用户 A | sometime | (x,y) |
| 用户 B | sometime | (x,y) |
| 用户 B | sometime | (x,y) |
| 用户 B | sometime | (x,y) |
| 用户 C | sometime | (x,y) |
| 用户 C | sometime | (x,y) |
| 用户 D | sometime | (x,y) |
| 用户 D | sometime | (x,y) |
| USERID | TIME_1 | TIME_2 | FARTHEST | USER_DATA_COUNT |
| ------------- | ------------- |------------- |------------- |------------- |
| 用户 D | 用户 D 最远的两个点点 1 的时间 | 用户 D 最远的两个点点 2 的时间 | 3900 | 2 |
| 用户 A | 用户 A 最远的两个点点 1 的时间 | 用户 A 最远的两个点点 2 的时间 | 3200 | 5 |
| 用户 C | 用户 C 最远的两个点点 1 的时间 | 用户 C 最远的两个点点 2 的时间 | 1900 | 2 |
| 用户 B | 用户 B 最远的两个点点 1 的时间 | 用户 B 最远的两个点点 2 的时间 | 1400 | 3 |
我想拿出每一个用户距离自己的最远距离
FARTHEST:假设 dist((x1,y1), (x2,y2)) 即可得出距离
USER_DATA_COUNT:当前用户的数据数量
最终根据 FARTHEST 个人迁徙最远距离由高到低排序
全部用户 ID:SELECT USERID from POINTS group by USERID
个人数据量:SELECT USERID, count(*) from POINTS group by USERID
-- 这个是错的,得不到想要的结果,所以来这里问大家
SELECT
POINTS1.USERID,
POINTS1.TIME AS time_1,
POINTS2.TIME AS time_2,
dist(POINTS1.GPS, POINTS2.GPS)
FROM
POINTS POINTS1,
POINTS POINTS2
WHERE
POINTS1.USERID = POINTS2.USERID
ORDER BY
dist(POINTS1.GPS, POINTS2.GPS) DESC
项目用到了 PostgreSQL 的 PostGIS 这个扩展,具有此地理距离计算能力
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.