PostrgreSQL 크로스탭 모듈을 사용하는 방법

Postrgresql Keuloseutaeb Modyul Eul Sayonghaneun Bangbeob



SELECT 문을 실행하여 PostgreSQL 테이블에서 레코드를 검색하면 데이터가 표 형식으로 반환됩니다. 특히 값을 비교하려는 경우에는 표 형식이 항상 데이터를 읽는 데 가장 적합한 것은 아닙니다. 더 나은 접근 방식은 레코드를 크로스탭으로 반환하는 것입니다. 이를 위해 PostgreSQL은 사용자가 크로스탭 기능을 활용하여 대상 데이터를 피벗 테이블로 나타낼 수 있도록 tablefunc를 제공합니다. 이 게시물에서는 PostgreSQL 크로스탭 기능을 사용하는 방법에 대해 자세히 설명합니다. 읽어!

PostgreSQL 크로스탭 모듈 작업

데이터 표시 방법을 지정할 수 있는 공간이 있으면 편리합니다. PostgreSQL을 사용하면 기본 방법은 데이터를 표 형식으로 유지하는 것이지만 크로스탭 모듈은 다른 옵션을 제공합니다. 더 나은 표현을 위해 PostgreSQL 테이블의 '선택' 열을 사용하여 피벗 테이블을 생성할 수 있습니다.

놀라운 기능은 PostgreSQL 버전 8.3의 확장 기능으로 제공됩니다. 'tablefunc' 확장은 크로스탭 기능을 제공하므로 피벗 테이블을 결과 집합으로 사용할 수 있습니다. 예를 들어 보겠습니다.







먼저 다음 명령을 사용하여 세 개의 열이 있는 '결과' 테이블을 만듭니다.





생성된 테이블이 비어 있습니다. 따라서 INSERT 쿼리를 사용하여 값을 추가하세요. 이 경우 다음과 같이 몇 가지 항목을 삽입합니다.





'select' 문을 실행하면 다음과 같은 결과를 얻습니다. 레코드를 검색하는 이 기본 방법이 레코드를 표 형식으로 표시하는 방식에 유의하세요. 열은 헤더로 사용되며 해당 값은 행에 표시됩니다.



대부분의 경우 이전 접근 방식이 작동하지만 동일한 레코드를 검색하는 또 다른 옵션이 있습니다. 이 경우 피벗 테이블을 만들고 싶습니다. 따라서 우리는 PostgreSQL 버전 8.3+과 함께 제공되는 'tablefunc' 확장을 사용합니다.


따라서 쿼리에서 호출할 때 활성화할 'tablefunc' 확장을 만들어 보겠습니다. 다음 명령을 실행합니다.

존재하지 않는 경우 확장 생성 tablefunc ;

이전 이미지에 있는 것과 같은 출력을 얻으면 확장이 성공적으로 활성화되었음을 알 수 있습니다.

크로스탭 기능의 경우 첫 번째 열이 교수진이 되도록 만들어 보겠습니다. 그 아래에는 우리 테이블에 있는 다양한 교수진이 나와 있습니다. 교수진 열 옆에는 테이블의 범주 열에 있는 다양한 값을 나타내는 다른 열이 있습니다. 마지막으로, 각 카테고리에 대해 다양한 카테고리를 달성한 학생의 수가 있습니다.

이러한 피벗 테이블을 얻으려면 다음 구문을 사용하십시오.

선택하다 * 크로스탭에서 ( '열 1을 선택하세요. , 열 2 , 컬럼3 FROM table_name ORDER BY 기준a' )

AS new_name ( 열 1 데이터_유형 , 열2 데이터_유형 , 열_n 데이터_유형 ) ;

우리가 만든 예제 테이블을 사용하면 명령은 다음과 같습니다.

결과를 보기 전에 크로스탭 모듈 명령이 어떻게 작동하는지 자세히 살펴보겠습니다. 먼저 SELECT 문은 세 개의 열을 반환합니다. 첫 번째 열은 행 식별자로 처리됩니다. 우리의 경우에는 “faculty” 열입니다. '범주' 열인 두 번째 열은 피벗 테이블의 범주를 나타냅니다. 마지막으로 세 번째 열에는 카테고리 값이 포함됩니다. 우리의 경우 각 카테고리의 학생 수입니다.

이를 이해하고 'Enter' 키를 누르면 다음과 같은 피벗 테이블이 표시됩니다.

반환된 피벗 테이블을 기반으로 SELECT 문의 첫 번째 열이 차원의 첫 번째 배열이고 두 번째 열이 두 번째 배열인 2차원 배열처럼 작동한다는 것을 알 수 있습니다. 세 번째 열에는 두 번째 배열 요소의 값이 포함됩니다.

결론

PostgreSQL 크로스탭은 테이블 값을 피벗 테이블로 표현하는 데 적합합니다. 크로스탭 모듈을 사용하려면 SELECT 문에서 세 개의 열을 반환해야 하며, 이 게시물에서는 이를 사용하는 방법에 대한 실제 예제를 공유했습니다. 또한 2차원 배열과 동일한 논리를 사용하는 피벗 테이블을 생성할 때 크로스탭 모듈이 어떻게 작동하는지 설명했습니다.