ホームページ >データベース >mysql チュートリアル >PostgreSQL で近隣地域と寝室数ごとの平均住宅価格を示すピボット テーブルを作成する方法

PostgreSQL で近隣地域と寝室数ごとの平均住宅価格を示すピボット テーブルを作成する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-13 09:53:43976ブラウズ

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

PostgreSQL でピボット テーブルを作成して平均住宅価格を表示する

問題: 近隣地域と寝室数ごとに分類された平均住宅価格を示す概要表をどのように生成できますか?

解決策: これには、PostgreSQL の crosstab 関数 (tablefunc 拡張機能から) を使用する 2 段階のプロセスが含まれます。

  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 関数に入力します。 この関数はデータをピボット テーブルに変換します。 2 番目の引数は、列として必要な寝室の数を指定します。 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。