检索特定时间范围内的值总和

时间:2020-05-19 18:01:31

标签: mysql sql

我有这样的桌子

现在时间:16:00

User    counter    last_time

=====   =======    =========

user1      3        14:30

user2      2        15:40

user3      3        15:45

我只想显示last_time比现在少1小时的结果。

所以考虑到我现在的时间是16:00,计数器的总和应为5。

我在某些用户事件期间更新了计数器和last_time。 我应该考虑另选一列还是可以做到?

1 个答案:

答案 0 :(得分:1)

请考虑以下内容:

DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table
(counter INT NOT NULL
,last_time TIME NOT NULL PRIMARY KEY
);

INSERT INTO my_table VALUES
(1,'14:30:00'),
(2,'15:40:00'),
(4,'15:45:00');

SELECT SUM(counter) total 
  FROM my_table 
 WHERE last_time >= CAST('16:00:00' AS TIME) - INTERVAL 1 HOUR;
+-------+
| total |
+-------+
|     6 |
+-------+

对于您的情况,可以将CAST...替换为...

SELECT SUM(counter) total 
  FROM my_table 
 WHERE last_time >= TIME(NOW() - INTERVAL 1 HOUR);