Мне нужно искать в каждом отдельном пользователе, используя оператор case, который имеет несколько условий, прежде чем он станет истинным. Оператор должен выполнить поиск каждого пользователя, чтобы выяснить, поступили ли они последовательно, за исключением других дней.
select
user_id,
case
when dates = 'Monday' and dates = 'Wednesday' then 'not_retained'
when dates = 'Monday' and dates = 'Tuesday' and dates = 'Wednesday' then 'retained'
else null
end as retention_of_user
from
retention_group
group by
user_id,
case
when dates = 'Monday' and dates = 'Wednesday' then 'not_retained'
when dates = 'Monday' and dates = 'Tuesday' and dates = 'Wednesday' then 'retained'
else null
end
Когда я использую запрос выше, оператор case возвращает нули
Я включил образец таблицы данных.
retinetion_group
user_id dates
User1 Monday
User1 Tuesday
User1 Wednesday
User2 Monday
User2 Wednesday
User3 Tuesday
User3 Monday
User3 Wednesday
User3 Wednesday
User4 Tuesday
User4 Wednesday
Вот результаты, которые я хотел бы получить.
Results
user_id retention_of_user
User1 retained
User2 not_retained
User3 retained
User4 NULL