У меня есть таблица, которая выглядит следующим образом:
userID | Date | Type |
B 2018-01-19 03:14:07 Start
B 2019-06-23 02:11:03 End
V 2017-01-19 03:14:07 Start
V 2019-08-19 02:33:07 End
C 2019-01-20 03:14:07 Start
C 2019-10-19 03:11:07 End
C 2019-05-19 03:33:07 Mid
Если я хочу по идентификатору рассчитать разницу в днях для каждого пользователя, смогу ли я сделать это с помощью cte для фильтрации type = 'Start' и 'End' для каждого CTE с последующим присоединением к ним или само присоединение по идентификатору? где каждая таблица будет отфильтрована по типу?
, так что cte, такой как:
with start as
(select id, date,
from table
where type = 'Start')
with end as
(select id, date,
from table
where type = 'End')
select s.id, date_diff('day', s.date, e.date) as duration
from start s
join end e
on s.id = e.id
Self join as:
select s.id, date_diff('day', s.date, e.date) as duration
from table t
join table t2
on t.id = t2.id
where t.type = 'start' and t2.type = 'end'
Будет ли оба правильно давать ожидаемый результат ?
Спасибо