【发布时间】:2026-02-16 01:35:01
【问题描述】:
我希望我能以一种可以理解的方式描述我的问题。
所以我得到了一个这样的日志事件表:
| id | event | count | marker |
|---|---|---|---|
| 1 | EVENT 1 | 3 | false |
| 2 | EVENT 1 | 2 | false |
| 3 | EVENT 2 | 4 | false |
| 4 | EVENT 1 | 1 | true |
| 5 | EVENT 1 | 6 | false |
| 6 | EVENT 1 | 2 | true |
| 7 | EVENT 1 | 5 | false |
| 8 | EVENT 2 | 3 | true |
| 9 | EVENT 1 | 3 | false |
| 10 | EVENT 2 | 5 | false |
我想要的是比每个事件不同的列标记中最后一次出现 true 的所有行的“计数”列的总和。
我能够像这样单独获得每个事件的结果(例如“事件 1”):
select sum(count) from test_table
where event='EVENT 1'
and id > (select id from test_table
where event='EVENT 1'
and marker=1
order by id desc limit 1);
此查询的结果将是 8(第 7 行和第 9 行的总和),对于“事件 2”的查询分别为 5(第 10 行的总和)。
但现在我想在一个查询中得到这些结果,如下所示:
| event | sum |
|---|---|
| EVENT 1 | 8 |
| EVENT 2 | 5 |
这可能吗?我玩了一下窗口函数,但没有得到想要的结果。
希望有人能帮帮我。
问候 弗兰克
【问题讨论】:
标签: mysql sql window-functions