ホームページ >データベース >mysql チュートリアル >PostgreSQL で近隣地域と寝室数ごとの平均住宅価格を示すピボット テーブルを作成する方法
問題: 近隣地域と寝室数ごとに分類された平均住宅価格を示す概要表をどのように生成できますか?
解決策: これには、PostgreSQL の crosstab
関数 (tablefunc
拡張機能から) を使用する 2 段階のプロセスが含まれます。
<code class="language-sql">SELECT neighborhood, bedrooms, AVG(price) AS average_price FROM listings GROUP BY neighborhood, bedrooms ORDER BY neighborhood, bedrooms;</code>
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 サイトの他の関連記事を参照してください。