首页 > 数据库 > mysql教程 > 如何在 PostgreSQL 中创建数据透视表来按社区和卧室数量汇总平均房价?

如何在 PostgreSQL 中创建数据透视表来按社区和卧室数量汇总平均房价?

Linda Hamilton
发布: 2025-01-13 06:47:43
原创
353 人浏览过

How to Create a Pivot Table in PostgreSQL to Summarize Average Housing Prices by Neighborhood and Number of Bedrooms?

在 PostgreSQL 中生成数据透视表来分析房价

PostgreSQL 提供强大的数据汇总功能,包括创建数据透视表。此示例演示如何生成数据透视表,显示按社区和卧室数量分组的平均房价。

第 1 步:计算每个社区的平均价格和卧室数量

首先,我们计算每个独特的社区和卧室数量组合的平均价格:

<code class="language-sql">SELECT neighborhood, bedrooms, AVG(price) AS avg_price
FROM listings
GROUP BY neighborhood, bedrooms
ORDER BY neighborhood, bedrooms;</code>
登录后复制

此查询按 listingsneighborhoodbedrooms 表数据进行分组,计算每组的平均值 price。 为了清楚起见,然后对结果进行排序。

第 2 步:使用 crosstab()

透视数据

为了将聚合数据转换为数据透视表格式,我们使用 crosstab() 函数:

<code class="language-sql">SELECT *
FROM crosstab(
  'SELECT neighborhood, bedrooms, avg_price
   FROM (
     SELECT neighborhood, bedrooms, AVG(price) AS avg_price
     FROM listings
     GROUP BY neighborhood, bedrooms
     ORDER BY neighborhood, bedrooms
   )',
  $$SELECT unnest('{0,1,2,3}'::int[])::text$$
) AS ct ("neighborhood" text, "0" int, "1" int, "2" int, "3" int);</code>
登录后复制

crosstab() 函数采用两个参数:提供聚合数据的 SQL 查询(为了清楚起见,在本例中嵌套),以及定义数据透视表列类别的查询(此处表示卧室数量:0、 1、2 和 3)。 生成的表别名 ct 相应地分配了列名称。

第 3 步:解释结果

输出数据透视表将类似于以下内容:

<code>neighborhood  | 0       | 1       | 2       | 3
----------------+---------+---------+---------+---------
downtown      | 189000  | 325000  | NULL     | 450000
riverview     | 250000  | 300000  | 350000  | NULL</code>
登录后复制

每一行代表一个社区,每列代表一个卧室数量。 这些值代表特定社区和卧室组合的平均价格。 NULL 表示未找到该特定组合的列表。 这提供了平均房价的清晰简洁的总结。 如果您的数据包含不同范围的卧室数量,请记住在 unnest 函数中调整卧室类别。

以上是如何在 PostgreSQL 中创建数据透视表来按社区和卧室数量汇总平均房价?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板