在 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>
crosstab()
函數採用兩個參數:提供聚合資料的SQL 查詢(為了清楚起見,在本例中嵌套),以及定義資料透視表列類別的查詢(此處表示臥室數量:0、 1 、2 和3)。 產生的表別名 ct
相應地分配了列名稱。
第 3 步:解釋結果
輸出資料透視表將類似以下內容:
<code>neighborhood | 0 | 1 | 2 | 3 ----------------+---------+---------+---------+--------- downtown | 189000 | 325000 | NULL | 450000 riverview | 250000 | 300000 | 350000 | NULL</code>
每一行代表一個社區,每列代表一個臥室數量。 這些數值代表特定社區和臥室組合的平均價格。 NULL
表示找不到該特定組合的清單。 這提供了平均房價的清晰簡潔的總結。 如果您的資料包含不同範圍的臥室數量,請記住在 unnest
函數中調整臥室類別。
以上是如何在 PostgreSQL 中建立資料透視表來按社區和臥室數量匯總平均房價?的詳細內容。更多資訊請關注PHP中文網其他相關文章!