如何编写SQL查询,按路线统计不同用户类型的骑行次数
按路线统计临时用户与会员用户的骑行次数
要实现按路线拆分临时用户(casual)和会员用户(member)的骑行次数统计,你可以通过以下两种方式修改原SQL:
方案1:按路线+用户类型分组(分行列示)
这种方式会将每个路线下的不同用户类型拆分为单独的行,清晰展示每个分组的骑行次数:
SELECT route, member_casual AS user_type, COUNT(*) AS count_of_trips FROM `fresh-ocean-357202.Cyclistic.Cyclistic_clean` GROUP BY route, member_casual ORDER BY route, count_of_trips DESC
方案2:条件聚合(同行对比)
如果希望在同一行中同时展示某条路线下两类用户的骑行次数,方便直接对比,可以使用条件聚合:
SELECT route, COUNT(CASE WHEN member_casual = 'casual' THEN 1 END) AS casual_trips, COUNT(CASE WHEN member_casual = 'member' THEN 1 END) AS member_trips, COUNT(*) AS total_trips FROM `fresh-ocean-357202.Cyclistic.Cyclistic_clean` GROUP BY route ORDER BY total_trips DESC LIMIT 10
说明
- 假设用户类型对应的字段名为
member_casual(这是Cyclistic公开数据集的标准字段名,如果你的表中字段名不同,替换为实际字段即可)。 - 方案1适合需要单独查看每个用户类型在各路线数据的场景;方案2更适合对比同一路线下两类用户的骑行次数差异。
内容的提问来源于stack exchange,提问作者Russel Orodio
相关产品推荐
相关产品推荐

