Mysql 一旦所有值都可用,在SQL中求和值
我将事件流到MySQL数据库中,我需要将事件分组并汇总到事务中,然后存储到另一个表中。数据如下所示:Mysql 一旦所有值都可用,在SQL中求和值,mysql,sql,Mysql,Sql,我将事件流到MySQL数据库中,我需要将事件分组并汇总到事务中,然后存储到另一个表中。数据如下所示: +----+---------+------+-------+ | id | transid | code | value | +----+---------+------+-------+ | 1 | 1 | b | 12 | | 2 | 1 | i | 23 | | 3 | 2 | b | 34 | | 4 |
+----+---------+------+-------+
| 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”:“不同数量的中间产物”哎哟。。对没有注意到我可能有几个