所有值可用后,在SQL中汇总值

时间:2012-12-04 10:58:40

标签: mysql sql

我有事件流入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;

但仅在该transid的所有事件到来之后。这是由具有代码e的事件决定的(b代表开头,e代表结束,i代表不同数量的中间体)。作为SQL的新手,如何在求和之前实现对结束代码存在的要求?

2 个答案:

答案 0 :(得分:1)

也许是having

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

答案 1 :(得分:0)

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

你应该统计小组中的记录。所以当有(b)egin时,(i)??不知道它是什么,(e)这个小组没有被过滤掉。