【问题标题】:Sum all count for every timestamp对每个时间戳的所有计数求和
【发布时间】:2022-11-29 04:18:57
【问题描述】:

嘿,我需要一些有关 sql 查询的帮助 我有这个数据

count Timestamp
1     10:05
2     10:06
3     10:07
1     10:08
2     10:09
3     10:10

我想为每个时间戳获得直到那一刻的计数总数

count Timestamp
1     10:05
3     10:06
6     10:07
7     10:08
9     10:09
12    10:10

我尝试了很多东西 我最后一个被它阻止的是:

select sum(count), timestamp 
from table
where timestamp > now() - interval 2 hour
group by date_format(timestamp, '%Y-%m-%d %h:%i')

但是这样一来,我并没有每次都获得总和的增加值,我想这是因为我使用了 group by 和时间戳

我正在考虑添加一个连接,我将在没有 group by 的情况下进行操作,但是在需要时间戳之前我如何才能获得总和?而不是所有的桌子

select sum(count)
from table 

【问题讨论】:

  • 这是“累计金额”。解决方案取决于精确的MySQL版本。
  • 如果这对您有用,您可以使用计数器并按时间戳排序吗? stackoverflow.com/a/51764189/1363190

标签: mysql sql sum


【解决方案1】:

样品表:

MariaDB [databasename]> create table quux (count integer, timestamp varchar(12));
Query OK, 0 rows affected (0.010 sec)

MariaDB [databasename]> insert into quux values (1,'10:05'),(2,'10:06'),(3,'10:07'),(1,'10:08'),(2,'10:09'),(3,'10:10');
Query OK, 6 rows affected (0.002 sec)
Records: 6  Duplicates: 0  Warnings: 0

查询以获得累计和:

MariaDB [databasename]> set @cumsum:=0; select (@cumsum := @cumsum + count) as count, timestamp from quux;
Query OK, 0 rows affected (0.000 sec)

+-------+-----------+
| count | timestamp |
+-------+-----------+
|     1 | 10:05     |
|     3 | 10:06     |
|     6 | 10:07     |
|     7 | 10:08     |
|     9 | 10:09     |
|    12 | 10:10     |
+-------+-----------+
6 rows in set (0.000 sec)

对于这个例子,

MariaDB [databasename]> select version();
+---------------------------------------+
| version()                             |
+---------------------------------------+
| 10.9.3-MariaDB-1:10.9.3+maria~ubu2204 |
+---------------------------------------+
1 row in set (0.000 sec)

【讨论】:

    猜你喜欢
    • 2022-01-09
    • 2020-04-19
    • 2012-08-31
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 2016-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多