如何在postgreSQL中按日期列分组得到最大列数
第一次在这里张贴海报,不确定我的标题是否真的勾勒出我在这里寻找的东西 我正试图获得以下信息: 一年中哪一个月每种房产类型的平均收入最高 我有两个表,其中包含我正在使用的以下字段:如何在postgreSQL中按日期列分组得到最大列数,postgresql,Postgresql,第一次在这里张贴海报,不确定我的标题是否真的勾勒出我在这里寻找的东西 我正试图获得以下信息: 一年中哪一个月每种房产类型的平均收入最高 我有两个表,其中包含我正在使用的以下字段: calendar_metric period (this is a date, formatted 'yyyy-mm-dd' revenue airbnb_property_id property property_type airbnb_property_id 我已经找到了如
calendar_metric
period (this is a date, formatted 'yyyy-mm-dd'
revenue
airbnb_property_id
property
property_type
airbnb_property_id
我已经找到了如何显示月份、物业类型和平均收入的方法,但我认为在正确分组时遇到了困难
select
extract(month from calendar_metric.period) as month,
property.property_type,
avg(calendar_metric.revenue) as average_revenue
from
calendar_metric
inner join property on
calendar_metric.airbnb_property_id = property.airbnb_property_id
group by
month,
property_type
我希望它输出的内容如下所示:
month | property_type | max_average_revenue
---------------------------------------------
1 | place | 123
2 | floor apt | 535
3 | hostel | 666
4 | b&b | 363
5 | boat | 777
etc| etc | etc
但目前我得到的是:
month-property_type | max_average_revenue
---------------------------------------------
1 | place | 123
2 | floor apt | 535
1 | place | 444
4 | b&b | 363
4 | b&b | 777
etc| etc | etc
所以本质上,当我从一个日期戳中提取月份时,月份是重复的,数据集跨越5年左右,我可能分组不对?我知道我可能遗漏了一些简单的东西,但我似乎不知道如何正确地做到这一点
救命啊 您应该按年-月进行分组,因为您试图查看5年期
我认为你的查询基本上是存在的,它只是返回所有月份,而不是过滤掉你不想要的行。我倾向于用这个来做这类事情,比如: 在属性类型上选择DISTINCT p、 属性类型,从cm提取月份。期间为月份, avgcm.作为收入的收入 从日历度量单位到厘米 使用airbnb_属性_id将属性连接为p 按属性类型、月份分组 按财产类型、收入说明排序; 我把你的问题缩短了一点,希望它对你仍然有意义 使用CTE,您可以通过两个步骤来表达这一点,这两个步骤可能更容易理解: 结果如下 选择p.property_类型,从cm.period中提取月份作为月份, avgcm.作为收入的收入 从日历度量单位到厘米 使用airbnb_属性_id将属性连接为p 按属性类型、月份分组 在属性类型上选择DISTINCT 财产类型、月份、收入 根据结果 按财产类型、收入说明排序;
select
extract(month from calendar_metric.period) as month,
property.property_type,
avg(calendar_metric.revenue) as average_revenue
from
calendar_metric
inner join property on
calendar_metric.airbnb_property_id = property.airbnb_property_id
group by
extract(year from period),
month,
property_type