首頁 >資料庫 >mysql教程 >如何在 PostgreSQL 中建立以社區和臥室數量顯示平均房價的資料透視表?

如何在 PostgreSQL 中建立以社區和臥室數量顯示平均房價的資料透視表?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-13 09:53:43976瀏覽

How to Create a Pivot Table Showing Average House Prices by Neighborhood and Bedroom Count in PostgreSQL?

在 PostgreSQL 中建立資料透視表來顯示平均房價

問題:我們如何產生一個總表,顯示平均房價(按社區和臥室數量細分)?

解決方案:這涉及使用 PostgreSQL 的 crosstab 函數(來自 tablefunc 擴充)的兩步驟過程。

  1. 以社區和臥室數量計算平均價格:首先,我們確定社區和臥室數量每種組合的平均價格。
<code class="language-sql">SELECT neighborhood, bedrooms, AVG(price) AS average_price
FROM listings
GROUP BY neighborhood, bedrooms
ORDER BY neighborhood, bedrooms;</code>
  1. 使用 crosstab 函數: 接下來,我們將步驟 1 的結果輸入到 crosstab 函數中。 此函數將資料轉換為資料透視表。 第二個參數指定我們想要作為列的臥室計數。 請注意,如果您尚未安裝 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn