2013-12-16 179 views
10

假設我有Postgres的表稱爲listings看起來像這樣:在PostgreSQL創建數據透視表

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

我怎樣寫一個交叉表查詢,顯示每間臥室的平均價格爲列和社區爲行?

查詢的輸出應該是這個樣子(數字由,列臥室):

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

回答

17

首先計算平均與聚合函數avg()

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

然後根據這個相關答案中的詳細說明將結果輸入到crosstab()函數中:

+0

謝謝。 GROUP BY 1,2是什麼意思? – Avishai

+4

@Avishai:(全功能)語法簡短的位置引用,簡稱爲「GROUP BY鄰居,臥室」 –