首頁 > 資料庫 > mysql教程 > 如何在 PostgreSQL 中建立資料透視表來按社區和臥室數量匯總平均房價?

如何在 PostgreSQL 中建立資料透視表來按社區和臥室數量匯總平均房價?

Linda Hamilton
發布: 2025-01-13 06:47:43
原創
397 人瀏覽過

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>
登入後複製

此查詢依 listingsneighborhoodbedrooms 表資料分組,計算每組的平均值 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板