假设我在Postgres中有一个名为listings
的表,如下所示:
id neighborhood bedrooms price
1 downtown 0 256888
2 downtown 1 334000
3 riverview 1 505000
etc.
如何编写交叉表查询,将每间卧室的平均价格显示为列,将邻里显示为行?
查询的输出应类似于以下内容(数字组成,列为卧室):
0 1 2 3
riverton 250000 300000 350000 -
downtown 189000 325000 - 450000
最佳答案
首先使用聚合函数avg()计算平均值:
SELECT neighborhood, bedrooms, avg(price)
FROM listings
GROUP BY 1,2
ORDER BY 1,2
然后按照此相关答案中的详细说明将结果提供给
crosstab()
函数: