Информация, которая не соответствует правильному интервалу дат, должна быть получена в snowflake

#sql #snowflake-cloud-data-platform

Вопрос:

У меня есть таблица под названием «EMAIL_AUDIT» . В этой таблице у меня есть столбец email_sent_date.

Эта колонка содержит нижеприведенные сведения… Я хочу повторно просмотреть данные, которые не находятся в снежинке с интервалом в 5 дней.

03-05-2021, 08-05-2021, 13-05-2021, 18-05-2021, 23-05-2021, 28-05-2021, 01-06-2021, 06-06-2021, 04-07-2021, 09-07-2021, 14-07-2021, 19-07-2021, 24-07-2021, 29-07-2021, 01-08-2021, 06-08-2021 мои данные.

мне нужны выходные данные, такие как 01-06-2021 и 01-08-2021. Пожалуйста, помогите мне.

Комментарии:

1. Содержит ли одна строка эти даты, разделенные запятыми?

2. Нет, каждая дата в каждой строке.

3. I want to retrive the data that is not in 5 days interval in snowflake. и i want output like 01-06-2021 and 01-08-2021. =gt; Разница между 28-05 и 01-06 составляет 4 дня, а 29-07 и 01-08-3 дня, поэтому предлагаемый результат не соответствует ожидаемому правилу.

Ответ №1:

Использование КВАЛИФИКАЦИИ в сочетании с ОПЕРЕЖЕНИЕМ/ОТСТАВАНИЕМ:

 SELECT * FROM EMAIL_AUDIT QUALIFY EMAIL_SENT_DATE lt; LAG(EMAIL_SENT_DATE,1, EMAIL_SENT_DATE)   OVER(ORDER BY EMAIL_SENT_DATE)   INTERVAL '5 DAYS'   AND EMAIL_SENT_DATE gt; LEAD(EMAIL_SENT_DATE,1, EMAIL_SENT_DATE)   OVER(ORDER BY EMAIL_SENT_DATE) - INTERVAL '5 DAYS';  

Ответ №2:

Согласно вашему описанию, результат должен быть 01-06-2021 и 04-07-2021, верно?

 SELECT email_sent_date  FROM VALUES ('03-05-2021'), ('08-05-2021'), ('13-05-2021'), ('18-05-2021'), ('23-05-2021'),  ('01-06-2021'), ('06-06-2021'), ('04-07-2021'), ('09-07-2021'), ('14-07-2021'),  ('19-07-2021'), ('24-07-2021'), ('29-07-2021'), ('01-08-2021'), ('06-08-2021') tmp(email_sent_date) QUALIFY LAG(TO_DATE( email_sent_date, 'DD-MM-YYYY')) OVER (ORDER BY TO_DATE( email_sent_date, 'DD-MM-YYYY'))  lt; TO_DATE( email_sent_date, 'DD-MM-YYYY') - INTERVAL '5 DAYS';   -----------------  | EMAIL_SENT_DATE |  -----------------  | 01-06-2021 | | 04-07-2021 |  -----------------