PostgreSQL 크로스 테이블 쿼리에 대한 자세한 설명: tablefunc 확장을 사용하여 피벗 테이블 생성
이 글에서는 tablefunc
확장을 사용하여 PostgreSQL에서 크로스 테이블 쿼리(Crosstab Queries)를 생성하여 데이터의 피벗 테이블 변환을 구현하는 방법을 자세히 소개합니다.
교차 테이블 쿼리 만들기
교차 테이블 쿼리는 데이터를 표 형식으로 변환합니다. 여기서 행은 범주를 나타내고 열은 값을 나타냅니다. PostgreSQL은 tablefunc
확장을 통해 이 기능을 구현합니다.
이중 매개변수 교차 테이블 쿼리 구문:
<code class="language-sql">SELECT * FROM crosstab( 'SELECT row_name, category, value FROM base_table ORDER BY 1, 2', 'SELECT DISTINCT attribute FROM base_table ORDER BY 1', ) AS ct (row_name text, column_1 type_1, ..., column_n type_n);</code>
누락된 속성 처리:
기본 테이블에 누락된 속성이 있는 경우 두 번째 매개변수를 사용하여 교차 테이블에 포함할 속성을 지정할 수 있습니다. 누락된 속성의 값은 비어 있습니다.
중복 입력 줄 처리:
고급 크로스 테이블 쿼리:
ORDER BY
절을 사용합니다. CASE
및 GROUP BY
문을 사용하세요. psql에서 crosstabview
사용(PostgreSQL 9.6 이상):
교차 테이블 쿼리를 수행하려면 psql에서 crosstabview
메타 명령을 사용하세요.
<code class="language-sql">\crosstabview</code>
예시 쿼리:
다음 예제 테이블을 고려해보세요.
<code class="language-sql">Section Status Count A Active 1 A Inactive 2 B Active 4 B Inactive 5</code>
섹션을 행으로, 상태를 열로 사용하여 크로스 테이블을 생성하려면 다음을 수행하세요.
<code class="language-sql">SELECT * FROM crosstab( 'SELECT section, status, COUNT(*) FROM tbl GROUP BY 1, 2', 'SELECT DISTINCT status FROM tbl ORDER BY 1', ) AS ct (Section text, Active int, Inactive int);</code>
결과:
<code>Section Active Inactive A 1 2 B 4 5</code>
위 내용은 tablefunc 확장을 사용하여 PostgreSQL에서 크로스탭 쿼리를 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!