MySQL 组合按时间间隔分组的唯一最大值的查询

MySQL query combining unique maximum values grouped by time interval

我正在尝试查询一个 table,它在许多时间间隔内有许多对象的许多记录。我想做的是 return 那天获得的最高分数 例如在这个 table

ID | obj | score | time 
1,  'a', 2,     DEC 21 2014, 5:00:00
2,  'a', 4,     DEC 21 2014, 8:00:00
3,  'a', 7,     DEC 22 2014, 10:00:00
4,  'a', 6,     DEC 22 2014, 16:00:00
5,  'b', 0,     DEC 21 2014, 4:00:00
6,  'b', 2,     DEC 21 2014, 8:00:00
7,  'b', 4,     DEC 22 2014, 10:00:00
8,  'b', 8,     DEC 22 2014, 18:00:00

查询将 return 四个记录

DEC 21 2014, a, 4
DEC 21 2014, b, 2
DEC 22 2014, a, 7
DEC 22 2014, b, 8

我知道 distinct 命令,我尝试过不同的分组命令,但还没有成功。谁能指出我应该使用什么样的关键词?

谢谢

这行得通吗?

SELECT DATE(时间), obj, MAX(score) FROM tbl GROUP BY 1,2

(table 上的主键是什么?)

试试这个:

SELECT time, obj, max(score)
FROM yourTable
GROUP BY time, obj;

这应该完全符合您的要求。

也许你可以尝试这样的事情

   SELECT * FROM tablename 
    WHERE (time > start_time)
      AND (time < end_time)

类似这样的东西,未经测试:

SELECT obj, MAX(score)
FROM a_table
WHERE time >= particular_day AND time < (particular_day + INTERVAL 1 DAY)
GROUP BY obj

我更喜欢使用这两个条件而不是转换为日期。

如果您想在一次查询中获取所有日期:

SELECT obj, MAX(score), CAST(time AS date)
FROM a_table
GROUP BY obj, CAST(time AS date)