설문조사
PostgreSQL/PPAS 관련 듣고 싶은 교육은


총 게시물 162건, 최근 0 건
   

홍이-1) PostgreSQL - crosstab function 사용관련

글쓴이 : 홍이 날짜 : 2014-12-09 (화) 19:13 조회 : 9253
집계 테이블을 표현 할 때 흔히 격자형 형태로 표현하기를 원하는 경우들이 있다.
이런 경우 엑셀에서는 pivot 이라는 기능을 이용한다.
데이터베이스에서도 비슷한 상황이 존재할 수 있는데, 이를 위해서 DBMS마다 약간씩 다른 방법을 제공한다. Postgresql 의 경우는 아래와 같은 방법을 제공한다.
-- crosstab 을 이용하기 위한extension 설치
edb=# CREATE EXTENSION tablefunc;
CREATE EXTENSION
edb=#
edb=# CREATE TABLE t (Section CHAR(1), Status VARCHAR(10), Count integer);
CREATE TABLE
edb=#
edb=#
edb=# INSERT INTO t VALUES ('A', 'Active',   1);
INSERT 0 1
edb=# INSERT INTO t VALUES ('A', 'Inactive', 2);
INSERT 0 1
edb=# INSERT INTO t VALUES ('B', 'Active',   4);
INSERT 0 1
edb=# INSERT INTO t VALUES ('B', 'Inactive', 5);
INSERT 0 1
edb=#
edb=#
edb=# select * from t;
section |  status  | count
---------+----------+-------
A       | Active   |     1
A       | Inactive |     2
B       | Active   |     4
B       | Inactive |     5
(4 rows)

edb=# SELECT row_name AS Section,
edb-#        category_1::integer AS Active,
edb-#        category_2::integer AS Inactive
edb-# FROM
crosstab
('select section::text, status, count::text from t',2)
edb-#             AS ct (row_name text, category_1 text, category_2 text);
section | active | inactive
---------+--------+----------
A       |      1 |        2
B       |      4 |        5
(2 rows)
 
 
참고)

   

postgresdba.com