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)
我正在尝试查询一个 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)