Mysql 一旦所有值都可用,在SQL中求和值

Mysql 一旦所有值都可用,在SQL中求和值,mysql,sql,Mysql,Sql,我将事件流到MySQL数据库中,我需要将事件分组并汇总到事务中,然后存储到另一个表中。数据如下所示: +----+---------+------+-------+ | id | transid | code | value | +----+---------+------+-------+ | 1 | 1 | b | 12 | | 2 | 1 | i | 23 | | 3 | 2 | b | 34 | | 4 |

我将事件流到MySQL数据库中,我需要将事件分组并汇总到事务中,然后存储到另一个表中。数据如下所示:

+----+---------+------+-------+
| id | transid | code | value |
+----+---------+------+-------+
|  1 |       1 | b    |    12 |
|  2 |       1 | i    |    23 |
|  3 |       2 | b    |    34 |
|  4 |       1 | e    |    45 |
|  5 |       3 | b    |    56 |
|  6 |       2 | i    |    67 |
|  7 |       2 | e    |    78 |
|  8 |       3 | i    |    89 |
|  9 |       3 | i    |    90 |
+----+---------+------+-------+
事件成批到达,我希望通过汇总每个transid的值来创建事务,如:

select transid, sum(value) from eventtable group by transid;
但只有在那次转变的所有事件发生之后。这是由代码为e的事件决定的(b表示开始,e表示结束,i表示不同数量的中间产物)。作为SQL的新手,我如何在求和之前实现终端代码存在的要求

select transid, sum(value) from eventtable 
group by transid 
HAVING COUNT(*) = 3

你应该清点组中的记录。那么当有(b)egin,(i)时??不知道它是什么,并且(e)此组未被筛选。

可能与
具有

select transid, sum(value)
from eventtable 
group by transid 
having max(case code when 'e' then 1 end)=1;

你是否尝试过使用触发器,它们可以解决你的问题我想可能不止一个“i”:“不同数量的中间产物”哎哟。。对没有注意到我可能有几个