通过具有相同名称的行的日期时间的差异对表进行排序

时间:2013-11-02 17:21:48

标签: mysql sql datetime

我有这个MySQL表:

ID:int,主键 用户名:varchar AccessTime:datetime

每当用户登录时,都会使用其用户名和当前时间写入一行。 现在,我想按照上次和第一次访问时间之间的时间对用户进行排序。

所以,对于一张桌子:

Petr, 12:00
Petr, 14:00
Martin, 15:00
Petr, 16:00
Martin, 16:00

结果将是

Petr, 4:00 (because 16-12=4)
Martin, 1:00 (16-15)

是否可以形成SQL查询来执行此操作?

我正在考虑按日期时间对表格进行排序,然后按名称进行分组(这应该给出最早日期给出的行,然后按日期时间降序排序和分组,这会给我最新日期,然后加入这两个结果

但是我不知道基本的SQL语法,所以我无法使它工作。

1 个答案:

答案 0 :(得分:2)

SELECT username,HOUR(TIMEDIFF(MAX(AccessTime),MIN(AccessTime))) timedifference FROM table
GROUP BY username ORDER BY timedifference