>데이터 베이스 >MySQL 튜토리얼 >crosstab() 함수를 사용하여 PostgreSQL에서 피벗 테이블을 만드는 방법은 무엇입니까?

crosstab() 함수를 사용하여 PostgreSQL에서 피벗 테이블을 만드는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-13 12:13:44156검색

How to Create Pivot Tables in PostgreSQL Using the crosstab() Function?

PostgreSQL과 crosstab() 함수를 사용하여 피벗 테이블 만들기

데이터 분석에는 다양한 변수 간의 관계를 탐색하는 경우가 많습니다. 피벗 테이블은 데이터를 요약하고 표시하는 강력한 도구로, 추세와 패턴을 쉽게 식별할 수 있습니다. 이 문서에서는 PostgreSQL을 사용하여 피벗 테이블을 만드는 방법을 보여줍니다.

질문:

PostgreSQL에 다음 열이 포함된 listings이라는 테이블이 있다고 가정해 보겠습니다.

  • id
  • neighborhood(동네)
  • bedrooms(침실 수)
  • price(가격)

침실 수를 열로, 동네 수를 행으로 사용하여 각 동네의 평균 가격을 표시하는 크로스탭 쿼리를 만들어야 합니다. 출력은 다음 형식이어야 합니다.

街区 0 1 2 3
市中心 189000 325000 - 450000
河景 250000 300000 350000 -

해결책:

PostgreSQL에서 피벗 테이블을 생성하려면 AVG() 모듈에서 제공하는 tablefunc 함수와 crosstab() 집계 함수를 함께 사용할 수 있습니다. 단계별 가이드는 다음과 같습니다.

  1. 침실 수당 평균 가격 계산:
<code class="language-sql">SELECT neighborhood, bedrooms, AVG(price)
FROM listings
GROUP BY 1, 2
ORDER BY 1, 2;</code>
  1. 크로스탭 쿼리 만들기:
<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() 함수보다 속도가 느립니다.
  • PostgreSQL에는 피벗 테이블을 생성하는 데 사용할 수 있는 다양한 방법과 확장 기능이 있습니다. 특정 요구 사항에 가장 적합한 솔루션을 찾으려면 설명서를 참조하십시오.

위 내용은 crosstab() 함수를 사용하여 PostgreSQL에서 피벗 테이블을 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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