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

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

Linda Hamilton
リリース: 2025-01-13 06:47:43
オリジナル
352 人が閲覧しました

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>
ログイン後にコピー
このクエリは、

テーブル データを listingsneighborhood でグループ化し、各グループの平均 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート