我有一个网站跟踪在线游戏的玩家统计数据。我正在努力建立的一个功能是获得玩家的战队历史。保存此信息的表格如下所示:
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
另一个问题是用户可能已经离开了一个战队然后再次加入它,而我上面的查询只是将它们捆绑在一起,所以我完全迷失了:/
提前致谢!
答案 0 :(得分:1)
要获得每组最早和最晚的日期,您可以使用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 演示