I have this data about user tracking (the user and session is not ordered):
user session cummulative_time_spent A 1 2 A 1 5 A 1 10 A 2 3 B 5 1 B 5 200 B 6 5 B 6 6
I want to create time spent that difference the rows that grouped by session. My expected result is like this:
user session cummulative_time_spent duration A 1 2 2 A 1 5 3 A 1 10 5 A 2 3 3 B 5 1 1 B 5 200 199 B 6 5 5 B 6 6 1
I don’t know how to do that on SQL (AWS Athena) or Quicksight.
Advertisement
Answer
You can use lag():
select
t.*,
cumulative_time_spent
- coalesce(
lag(cumulative_time_spent)
over(partition by user, session order by cumulative_time_spent),
0
) duration
from mytable