|
|
|
|
홍이-1) PostgreSQL - crosstab function 사용관련
|
|
글쓴이 : 홍이
날짜 : 2014-12-09 (화) 19:13
조회 : 12584
|
|
집계
테이블을 표현 할 때 흔히 격자형 형태로 표현하기를 원하는 경우들이 있다.
이런
경우 엑셀에서는 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=# 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=# 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)
|
|
|
|
|