Вы можете объединить, чтобы получить ожидаемый ответ:
select cust_id,
case
when max(logindate) > current_date - 7 -- active last week
then 'Returning WAU'
when max(logindate) > current_date - 30 -- not active last week, but active within last 30 days
then 'WAU'
else 'Reactivated WAU' –- not seen in 30+ days
end
from tab
group by 1
Что касается проблемы с LAG, это было введено в 16.10, прежде чем вам придется переписывать:
lag(logindate, 1)
over (partition by cust_id
order by col asc) as lag_ind
max(logindate)
over (partition by cust_id
order by col asc
rows between 1 preceding and 1 preceding) as lag_ind
Подсказка : никогда не используйте ORDER BY 1 в функции OLAP, здесь это буквальное значение, а не первый столбец.