#sql #hive #recursive-query
#sql #улей #рекурсивный запрос
Вопрос:
Я использую Hive SQL server. В моей базе данных я пытаюсь удалить записи, у которых разрыв с предыдущей записью составляет менее 7 дней, но при удалении записи я хочу проверить разрыв с «предыдущей сохраненной записью», а не с какой-либо предыдущей записью.
Я хочу сохранить всю запись, помеченную как 1, в частности, Rec # 7, Хотя пробел в 7-й записи равен <7, поскольку предыдущая запись удаляется, разрыв между 7-й и 5-й становится 8.
Ответ №1:
Вы можете использовать накопительный максимальный:
select t.*
from (select t.*,
max(case when retained = 1 then intdate end) over (order by intdate rows between unbounded preceding and 1 preceding) as prev_intdate
from t
) t
where prev_intdate is null or
prev_intdate > dateadd(intdate, 7);