我有一个跟踪在线游戏玩家统计数据的网站。我试图构建的功能之一是获取玩家的氏族历史。保存此信息的表如下所示:
PLAYERID --|-- CLANTAG -|- UPDATETIME
-----------------------------------------------
XXXXXXXX --|-- [XXXXX] -|- 0000-00-00 00:00:00
UPDATETIME 是我的爬虫访问游戏 API 并获取信息的日期和时间,这也是我在某个部落中花费的时间的基础。
我有这个查询,但它只获取用户进入部落的日期。我想不通的是如何获得他拥有该 CLANTAG 的最早日期和最新日期:
SELECT CLANTAG, UPDATETIME FROM account_stats WHERE PLAYERID = "XXXXXXXXX" GROUP BY CLANTAG
另一个问题是用户可能离开了一个部落然后又加入了它,而我上面所做的查询只是将它们捆绑在一起,所以我完全迷路了:/
提前致谢!
最佳答案
要获取每个组的最早和最晚日期,您可以使用 MIN()
和 MAX()
聚合函数
SELECT playerid, clantag,
MIN(updatetime) earliest_time,
MAX(updatetime) latest_time
FROM Table1
WHERE playerid = 1
GROUP BY playerid, clantag
示例输出:
| PLAYERID | CLANTAG | EARLIEST_TIME | LATEST_TIME | --------------------------------------------------------------------------------- | 1 | 1 | May, 20 2013 12:00:00+0000 | July, 03 2013 15:00:00+0000 |
这是 SQLFiddle 演示
关于MySQL - 获取连续的天数保持不变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18236705/