У меня есть следующая таблица:
topic_id conversation logical_date start_date end_date type
1 1 2020-01-01 09:00 2020-01-01 09:00 2020-01-01 09:50 phone call
1 2 2020-01-01 09:14 text
1 3 2020-01-01 10:27 text
2 1 2020-02-03 08:40 text
В этой таблице представлены запросы поддержки. Каждый запрос поддержки имеет topi c, а topi c имеет 1 или более разговоров.
Я хочу найти все текстовые запросы, которые выполнялись между start_date и end_date телефонного звонка.
Поэтому для приведенной выше таблицы я хочу видеть:
topic_id conversation_id start_date end_date sum
1 1 2020-01-01 09:00 2020-01-01 09:50 1
Лог c: Для каждого topic_id введите = 'phone call', возьмите start_date и end_date, сравните их с беседами type = 'text' из this topic_id суммирует тех, кто их логическая_дата между start_date и end_date
Я знаю, что мне нужно сделать это с помощью оконной функции, но я не уверен, как.
Это то, что я имею до сих пор:
select topic_id, conversation_id, start_date, end_date, count(1 ) over partition by ()
from table
where type = 'phone call'
Я использую Presto