1. ホーム
  2. sql

[解決済み] PostgreSQLでピボットテーブルを作成する

2022-03-05 23:06:13

質問

Postgresのテーブルに listings は、次のようなものです。

id    neighborhood    bedrooms    price
1     downtown        0           256888
2     downtown        1           334000
3     riverview       1           505000
etc.

ベッドルームあたりの平均価格を列として、近隣地域を行として表示するcrosstabクエリを作成するにはどうすればよいですか?

クエリの出力は次のようになります(数字は作り置き、列は寝室)。

            0       1       2       3
riverton    250000  300000  350000  -
downtown    189000  325000  -       450000

解決方法は?

まず、集約関数で平均を計算します。 avg() :

SELECT neighborhood, bedrooms, avg(price)
FROM   listings
GROUP  BY 1,2
ORDER  BY 1,2

そして、その結果を crosstab() 関数の使い方については、この関連回答で詳しく説明されています。