문제: 동네별, 침실 수별로 분류된 평균 주택 가격을 보여주는 요약 테이블을 어떻게 생성할 수 있나요?
해결책: 여기에는 PostgreSQL의 crosstab
함수(tablefunc
확장에 있음)를 사용하는 2단계 프로세스가 포함됩니다.
<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 중국어 웹사이트의 기타 관련 기사를 참조하세요!