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 중국어 웹사이트의 기타 관련 기사를 참조하세요!