I am trying to get the average ride length duration for casual and member riders from the dataset "all_year" and list it as average_trip_duration_all_year
Code I am trying to run:
SELECT member_casual, CASE
WHEN member_casual = 'member' THEN (SELECT AVG(ended_at - started_at))
WHEN member_casual = 'casual' THEN (SELECT AVG(ended_at - started_at))
END AS average_trip_duration_all_year
FROM `savvy-night-365318.Cyclist.all_year`
GROUP BY member_casual;
example of dataset
started_at | ended_at | member_casual |
---|---|---|
2022-01-14 08:55:03 UTC | 2022-01-14 09:01:11 UTC | member |
Not sure what I am doing wrong, any help would be greatly appreciated!
The expected outcome would be to see the average_trip_duration_all_year for casual and member riders for the whole year.
2
Answers
It looks like you are trying to do the same thing in both branches of the
CASE
statement. I think you should be able to select the average directly, like this:You’re doing the same thing in both branches of the case. Maybe that’s a typo, first let’s assume it’s not.
Since you’re already grouping by
member_casual
there’s no need for the case. If you only want to group when member_casual is ‘member’ or ‘casual’ use a where clause.Let’s assume it is a typo and you want to do the math differently for each. Make the case the expression you pass to avg.
Demonstration.