是否有将多个表的结果组合在一起的功能/解决方法



我使用的是一个虚构的共享单车服务的数据集。该数据总共包含12个月的数据,分为12个表,每个月一个表。列和数据类型是一致的,我主要关注两列——成员类型和ride_length。member_type列只有两个值,"member"或"casual"。我想比较会员和休闲骑手每个月的平均骑行时间,但结果显示在一张表上。

结果应该是这样的:

member_type |一月|二月|三月
成员|100|50|30
休闲|60|45|25

我能想到的一个解决方案是将所有的表组合成一个大表,创建一个月列,然后从那里开始,但如果我能帮助的话,我不想这样做。提前谢谢。

使用CTE来构建您不想动态创建的表。

与组合为(选择1作为月份,从jan_tbl T union all中选择T.*从feb_tbl T union all中选择2,T.*。。。)从组合
中选择

这里的问题是您的数据模型。你不应该每个月有一张桌子。所有这些行驶值都应该在同一个表中,并带有一个月的列。事实上,所有月份表中的列都是相同的,这是一个线索。

然后你会执行这样的查询:

select month, member_type, sum( ride_length ) as ride_length
from mytable
group by month, member_type

这会给你这样的结果:

month      member_type   ride_length
---------- ------------- -----------
january    member        100
january    casual        60
february   member        50
february   casual        45
march      member        30
march      casual        25

这将为您提供所需的数据,尽管您确实希望将月份列转换为其他列。这是一个pivot,执行此操作的语法将因数据库而异。

最新更新