【发布时间】:2014-12-09 18:55:17
【问题描述】:
我想删除/忽略/将有用的日志与无用的日志分开。有用的日志发生在flag 已知的时间之前或时间。无用的日志出现在第一个标记的日志之后。
数据看起来像这样。每次看到UIDt:
UID t flag PCP
'0000' 1 0 0
'0000' 2 1 0
'0000' 3 1 0
'0000' 4 0 0
'1111' 11 1 0
'1111' 12 0 0
'1111' 13 0 0
'2222' 1 0 0
'2222' 2 0 0
'2222' 3 0 0
是否有在 PCP 中输入 0/1 值的查询,以便我可以得到
UID t flag PCP
'0000' 1 0 1
'0000' 2 1 1
'0000' 3 1 0
'0000' 4 0 0
'1111' 11 1 1
'1111' 12 0 0
'1111' 13 0 0
'2222' 1 0 0
'2222' 2 0 0
'2222' 3 0 0
注意:实际上 flag 是 \in {0,1,2},我希望 PCP 反映 flag = 2。所以增量 sum() 不起作用。
编辑:这个问题是相似的(不同的结局,我不擅长 SQl,不知道如何从这个问题中获得我想要的输出)。 Flag dates occurring after an event within individuals
另一个编辑:在 sqlite 中,您可以在 >/= 操作中比较字符串和整数,而我认为在 SQL 中您不能。我的表全是文本,但与整数比较已经足够好了,上面的问题因为输入 SQL 而被打破。见http://sqlfiddle.com/#!3/00448/3
【问题讨论】:
-
最终答案:sqlfiddle.com/#!7/86b91/1 基于接受的答案。我对速度有点不满意(我必须在 10^7 日志上执行此操作),并将寻求优化。