- 전체
- Sample DB
- database modeling
- [표준 SQL] Standard SQL
- G-SQL
- 10-Min
- ORACLE
- MS SQLserver
- MySQL
- SQLite
- postgreSQL
- 데이터아키텍처전문가 - 국가공인자격
- 데이터 분석 전문가 [ADP]
- [국가공인] SQL 개발자/전문가
- NoSQL
- hadoop
- hadoop eco system
- big data (빅데이터)
- stat(통계) R 언어
- XML DB & XQuery
- spark
- DataBase Tool
- 데이터분석 & 데이터사이언스
- Engineer Quality Management
- [기계학습] machine learning
- 데이터 수집 및 전처리
- 국가기술자격 빅데이터분석기사
- 암호화폐 (비트코인, cryptocurrency, bitcoin)
postgreSQL [PostgreSQL] 열을 행으로 전환 쿼리
2023.01.29 16:21
[PostgreSQL] 열을 행으로 전환 쿼리
PostgreSQL에서는 DECODE를 지원 안하기 때문에 CASE문으로 대체하여
열을 행으로 전환하는 쿼리 구현 방법이다.
오라클에서 MAX(DECODE) 형태로 사용.
PostgreSQL에서는 DECODE 대신 CASE 구문으로 변경(CASE 사용 시 ELSE 를 반드시 명시)
경우에 따라 MAX 대신에 SUM, MIN, COUNT 등 다른 합계(Aggregate) 함수를 사용
SELECT cdate
, SUM(CASE WHEN type = 'OSX' THEN val ELSE 0 END) OSX , SUM(CASE WHEN type = 'Windows' THEN val ELSE 0 END) Windows , SUM(CASE WHEN type = 'Linux' THEN val ELSE 0 END) Linux FROM ( SELECT A::date AS cdate, A.desc AS TYPE, (RANDOM() * 10000 + 1)::int AS val FROM GENERATE_SERIES( (NOW() - '10 days'::interval)::date, NOW()::date, '1 day'::interval) A, (SELECT UNNEST(ARRAY['OSX', 'Windows', 'Linux']) AS DESC) B ) A GROUP BY cdate |
오라클에서는 MAX(DECODE) 방법과 CASE 구분 둘다 사용이 가능하지만 가급적 CASE 구문을
사용하는 것을 추천한다. 쿼리를 돌려보면 방대한 데이터를 조회시 속도 차이가 나기 때문이다. PostgreSQL에서는 DECODE 함수가 없기 때문에 CASE 구분으로 변경하여 사용하였다.
[출처] https://blog.naver.com/wiseyoun07/221136671840
본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.