This is my query. I use the same window function sum()
with the same partition definition for 14 result columns:
select id,weekly,
sum(totalsteps) OVER (PARTITION BY id, weekly) as total_steps,
sum(totaldistance) OVER (PARTITION BY id, weekly) as total_distance,
sum(veryactiveminutes) OVER (PARTITION BY id, weekly) as total_veryactive,
sum(fairlyactiveminutes) OVER (PARTITION BY id, weekly) as total_fairlyactive,
sum(lightlyactiveminutes) OVER (PARTITION BY id, weekly) as total_lightlyactive,
sum(totalsteps) OVER (PARTITION BY id, weekly) as total_steps,
sum(totaldistance) OVER (PARTITION BY id, weekly) as total_distance,
sum(veryactivedistance) OVER (PARTITION BY id, weekly) as total_veryactivedistance,
sum(moderatelyactivedistance) OVER (PARTITION BY id, weekly) as total_moderatelyactivedistance,
sum(lightactivedistance) OVER (PARTITION BY id, weekly) as total_lightactivedistance,
sum(sedentaryactivedistance) OVER (PARTITION BY id, weekly) as total_sedentaryactivedistance,
sum(calories) OVER (PARTITION BY id, weekly) as total_calories,
sum(totalminutesasleep) OVER (PARTITION BY id, weekly) as total_asleep,
sum(totaltimeinbed) OVER (PARTITION BY id, weekly) as total_inbed
from (select *, date_trunc('week', activitydate) as weekly
from activitysleep_merged
) as weeklysum
Do I have to spell out OVER (PARTITION BY id, weekly)
with each sum?
Is there better way to re-write my query?