問題:我們如何產生一個總表,顯示平均房價(按社區和臥室數量細分)?
解決方案:這涉及使用 PostgreSQL 的 crosstab
函數(來自 tablefunc
擴充)的兩步驟過程。
<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
函數中。 此函數將資料轉換為資料透視表。 第二個參數指定我們想要作為列的臥室計數。 請注意,如果您尚未安裝 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中文網其他相關文章!