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

时间:2015-04-20 19:58:41

标签: mysql grouping

我正在尝试查询一个表,该表在很多时间间隔内有许多对象的记录。我想要做的是返回在特定日期获得的最高分数例如在此表上

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

并且查询将返回四个记录

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

我知道不同的命令,我尝试过不同的分组命令,但还没有成功。任何人都可以用我应该使用的关键词来指出我吗?

谢谢

4 个答案:

答案 0 :(得分:0)

这会有用吗?

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

(桌子上的主键是什么?)

答案 1 :(得分:0)

试试这个:

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

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

这样的事情,没有经过测试:

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)