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

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

Mary-Kate Olsen
发布: 2025-01-13 09:53:43
原创
976 人浏览过

How to Create a Pivot Table Showing Average House Prices by Neighborhood and Bedroom Count in PostgreSQL?

在 PostgreSQL 中创建数据透视表来显示平均房价

问题:我们如何生成一个汇总表,显示平均房价(按社区和卧室数量细分)?

解决方案:这涉及使用 PostgreSQL 的 crosstab 函数(来自 tablefunc 扩展)的两步过程。

  1. 按社区和卧室数量计算平均价格:首先,我们确定社区和卧室数量每种组合的平均价格。
<code class="language-sql">SELECT neighborhood, bedrooms, AVG(price) AS average_price
FROM listings
GROUP BY neighborhood, bedrooms
ORDER BY neighborhood, bedrooms;</code>
登录后复制
  1. 使用 crosstab 函数: 接下来,我们将步骤 1 的结果输入到 crosstab 函数中。 该函数将数据转换为数据透视表。 第二个参数指定我们想要作为列的卧室计数。 请注意,如果您尚未安装 tablefunc 扩展,则需要安装 (CREATE EXTENSION tablefunc;)。
<code class="language-sql">SELECT *
FROM crosstab(
    'SELECT neighborhood, bedrooms, AVG(price)::int AS average_price
     FROM listings
     GROUP BY neighborhood, bedrooms
     ORDER BY neighborhood, bedrooms',
    $$SELECT unnest('{0,1,2,3}'::int[]) AS bedrooms$$
) AS ct ("neighborhood" text, "0" int, "1" int, "2" int, "3" int);</code>
登录后复制

此查询生成一个数据透视表,其中以街区为行,以 0、1、2 和 3 间卧室的平均价格为列。 请记住调整 '{0,1,2,3}' 数组以反映 listings 表中存在的实际卧室数量。 ::int 强制转换确保平均价格被视为整数;您可能需要根据您的 price 列的数据类型进行调整。

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

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