>데이터 베이스 >MySQL 튜토리얼 >이웃 및 침실 수별 평균 주택 가격을 요약하기 위해 PostgreSQL에서 피벗 테이블을 만드는 방법은 무엇입니까?

이웃 및 침실 수별 평균 주택 가격을 요약하기 위해 PostgreSQL에서 피벗 테이블을 만드는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-13 06:47:43352검색

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>

이 쿼리는 listings 테이블 데이터를 neighborhoodbedrooms별로 그룹화하여 각 그룹의 평균 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.