我正在尝试查询一个表,该表在很多时间间隔内有许多对象的记录。我想要做的是返回在特定日期获得的最高分数例如在此表上
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
我知道不同的命令,我尝试过不同的分组命令,但还没有成功。任何人都可以用我应该使用的关键词来指出我吗?
谢谢
答案 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)