MariaDB SQL

세로 데이터를 가로 데이터로 변환해 보자

ssamhago 2023. 3. 15. 20:14
728x90
320x100

세로 데이터를 가로 데이터로 변환해 보자

 

아래 TEST 테이블의 테이터를
VERTICAL(종/세로) 에서
HORIZONTAL(횡/가로) 로
변환해 보려고 한다.

 

 

BEFORE : TEST (VERTICAL), 세로 데이터 

 

TEST
NAME CLASS SCORE
AAA KOR 100
AAA ENG 100
AAA CHN 50
BBB KOR 90
BBB ENG 70
BBB CHN 30
CCC KOR 80
CCC ENG 80
CCC CHN 40

 

 

AFTER : TEST (HORIZONTAL), 가로 데이터

 

TEST
NAME KOR ENG CHN
AAA 100 100 50
BBB 90 70 30
CCC 80 80 40

 

먼저 CASE WHEN 을 사용하여 데이터의 정렬을 가로화 해보자.

SELECT NAME,
   CASE WHEN CLASS = 'KOR' THEN SCORE END AS KOR,
   CASE WHEN CLASS = 'ENG' THEN SCORE END AS ENG,
   CASE WHEN CLASS = 'CHN' THEN SCORE END AS CHN
FROM TEST;

[실행결과]
TEST
NAME KOR ENG CHN
AAA 100 NULL NULL
AAA NULL 100 NULL
AAA NULL NULL 50
BBB 90 NULL NULL
BBB NULL 70 NULL
BBB NULL NULL 30
CCC 80 NULL NULL
CCC NULL 80 NULL
CCC NULL NULL 40

 

이제 NAMEGROUP화 시킨후, MAX()를 사용하여 TEST (HORIZONTAL)를 쉽게 구할 수 있다.

SELECT NAME,
   MAX( CASE WHEN CLASS = 'KOR' THEN SCORE END ) AS KOR,
   MAX( CASE WHEN CLASS = 'ENG' THEN SCORE END ) AS ENG,
   MAX( CASE WHEN CLASS = 'CHN' THEN SCORE END ) AS CHN
FROM TEST
GROUP BY NAME;

[실행결과]
TEST
NAME KOR ENG CHN
AAA 100 100 50
BBB 90 70 30
CCC 80 80 40

 

 

※ 참고 자료.

 

CASE WHEN 을 사용하여 조건에 맞는 결과값을 나타내보자.

 

CASE WHEN 을 사용하여 조건에 맞는 결과값을 나타내보자.

SQL Query 문에서 if같은 조건문을 사용하고자 할때, CASE 문을 사용한다. ※ 사용법 CASE WHEN 조건1 THEN '결과값1' WHEN 조건2 THEN '결과값2' . . . ELSE '최후의 결과값' END - WHEN과 THEN은 한쌍으로 사용되어야

r-ayo.com

MAX vs MIN (최대 vs 최소) 함수를 알아보자

 

MAX vs MIN (최대 vs 최소) 함수를 알아보자

MAX(컬럼명) vs MIN(컬럼명) 해당 함수는 숫자만이 아닌 문자형 데이터에도 사용할 수 있다. 최대값 구하기 SELECT MAX(컬럼명) FROM 테이블; 최소값 구하기 SELECT MIN(컬럼명) FROM 테이블; USER_TABLE ID USER_NM

r-ayo.com

 

728x90
반응형