ホームページ >データベース >mysql チュートリアル >PostgreSQL でピボット テーブルを作成して、近隣地域と寝室数ごとの平均住宅価格を要約する方法
住宅価格を分析するための 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>このクエリは、
テーブル データを listings
と neighborhood
でグループ化し、各グループの平均 bedrooms
を計算します。 その後、結果をわかりやすくするために順序付けします。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>
関数は 2 つの引数を取ります。1 つは集計データを提供する SQL クエリ (この場合はわかりやすくするためにネストされています)、もう 1 つはピボット テーブルの列のカテゴリを定義するクエリ (ここでは寝室の数を表します: 0、 1、2、3)。 結果のテーブル エイリアス crosstab()
には、それに応じて列名が割り当てられます。ct
ステップ 3: 結果の解釈
出力ピボット テーブルは次のようになります:
<code>neighborhood | 0 | 1 | 2 | 3 ----------------+---------+---------+---------+--------- downtown | 189000 | 325000 | NULL | 450000 riverview | 250000 | 300000 | 350000 | NULL</code>各行は近隣地域を表し、各列は寝室の数を表します。 値は、その特定の近所と寝室の組み合わせの平均価格を表します。
は、その特定の組み合わせのリストが見つからなかったことを示します。 これは、平均住宅価格の明確かつ簡潔な概要を提供します。 データに異なる範囲の寝室数が含まれている場合は、NULL
関数で寝室のカテゴリを忘れずに調整してください。unnest
以上がPostgreSQL でピボット テーブルを作成して、近隣地域と寝室数ごとの平均住宅価格を要約する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。