Я хочу удалить/проигнорировать/разделить журналы, которые полезны из журналов, которые не являются полезными. Журналы, которые полезны, встречаются до или во время, которое известно flag
. Журналы, которые не являются полезными, появляются после первого помеченного журнала.Разделение строк данных на основе флага и метки времени
Данные выглядят следующим образом. Каждый UID
видел во время t
:
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
Есть ли запрос на ввод значение 0/1 в PCP, так что я могу получить
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
Примечание: в флаге актуальности является \ в {0,1 , 2}, и я хочу, чтобы PCP отражал флаг = 2. Таким образом, инкрементная сумма() не будет работать.
Редактировать: этот вопрос аналогичен (разный конец, и я не очень хорошо разбираюсь в SQl, чтобы знать, как получить результат, который я хочу получить от этого вопроса). Flag dates occurring after an event within individuals
Другое редактирование: в sqlite вы можете сравнивать строки и ints в операциях>/=, и я думаю, что в SQL вы не можете. Моя таблица находится в тексте, но сравнение с целыми числами идет достаточно хорошо, и вопрос выше ломается из-за ввода в SQL. см. http://sqlfiddle.com/#!3/00448/3
окончательный ответ: http://sqlfiddle.com/#!7/86b91/1 основаны от принятого ответа. Я немного недоволен скоростью (я должен сделать это на 10^7 журналов) и буду искать оптимизацию. – ehacinom