집 >데이터 베이스 >MySQL 튜토리얼 >crosstab() 함수를 사용하여 PostgreSQL에서 피벗 테이블을 만드는 방법은 무엇입니까?
PostgreSQL과 crosstab() 함수를 사용하여 피벗 테이블 만들기
데이터 분석에는 다양한 변수 간의 관계를 탐색하는 경우가 많습니다. 피벗 테이블은 데이터를 요약하고 표시하는 강력한 도구로, 추세와 패턴을 쉽게 식별할 수 있습니다. 이 문서에서는 PostgreSQL을 사용하여 피벗 테이블을 만드는 방법을 보여줍니다.
질문:
PostgreSQL에 다음 열이 포함된 listings
이라는 테이블이 있다고 가정해 보겠습니다.
id
neighborhood
(동네)bedrooms
(침실 수)price
(가격)침실 수를 열로, 동네 수를 행으로 사용하여 각 동네의 평균 가격을 표시하는 크로스탭 쿼리를 만들어야 합니다. 출력은 다음 형식이어야 합니다.
街区 | 0 | 1 | 2 | 3 |
---|---|---|---|---|
市中心 | 189000 | 325000 | - | 450000 |
河景 | 250000 | 300000 | 350000 | - |
해결책:
PostgreSQL에서 피벗 테이블을 생성하려면 AVG()
모듈에서 제공하는 tablefunc
함수와 crosstab()
집계 함수를 함께 사용할 수 있습니다. 단계별 가이드는 다음과 같습니다.
<code class="language-sql">SELECT neighborhood, bedrooms, AVG(price) FROM listings GROUP BY 1, 2 ORDER BY 1, 2;</code>
<code class="language-sql">SELECT * FROM crosstab( 'SELECT neighborhood, bedrooms, AVG(price)::INT FROM listings GROUP BY 1, 2 ORDER BY 1, 2;' , $$SELECT UNNEST('{0,1,2,3}'::INT[])::TEXT$$ ) AS ct ("neighborhood" TEXT, "0" INT, "1" INT, "2" INT, "3" INT);</code>
설명:
crosstab()
함수는 첫 번째 쿼리 결과를 입력으로 받아 피벗 테이블을 만듭니다. crosstab()
함수에 전달된 문자열은 헤더에 배치될 열 값을 지정합니다. ::INT
캐스트는 출력에서 반올림된 값을 얻기 위해 AVG()
결과를 정수로 변환하는 데 사용됩니다. 추가 참고사항:
tablefunc
기능을 사용하려면 crosstab()
모듈을 설치해야 합니다. FILTER
절을 사용하여 피벗 테이블을 생성할 수도 있지만 일반적으로 crosstab()
함수보다 속도가 느립니다. 위 내용은 crosstab() 함수를 사용하여 PostgreSQL에서 피벗 테이블을 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!