안녕하세요.
오늘은 MySQL에서 행과 열 데이터를 바꾸어보는 방법에 대해서 알아보겠습니다.
행과 열 단순 바꾸기 (Transpose)
▣ Transpose 행과 열 바꾸기
- Excel에는 행과 열을 바꿔서 출력하는 Transpose 함수가 있는데 안타깝게도 SQL에는 그러한 기능을 가진 함수가 없습니다. 이번 시간에는 Transpose 역할을 하는 쿼리를 한 번 짜보겠습니다.
: 예시 데이터 준비
--Data 생성하기
CREATE TABLE Example
(`name` varchar(4), `height` int, `score` int, `groups` varchar(1))
;
INSERT INTO Example
(`name`, `height`, `score`, `groups`)
VALUES
('john', 174, 87, 'A'),
('bs', 167, 50, 'B'),
('sh', 179, 73, 'C'),
('jk', 177, 63, 'A'),
('ja', 193, 99, 'A'),
('ta', 173, 84, 'B'),
('ts', 171, 77, 'C')
;
-- Group By
Select groups, sum(score) from Example
group by groups;
- Example 데이터에는 학생들의 이름, 키, 점수 그리고 속한 반이 들어가 있습니다. 위에 출력한 자료는 학생들이 속한 반(groups)별로 점수 합계를 나타낸 것입니다.
- sum(case when ~) 구절을 통해 해당 출력물의 행과 열을 Transpose해보겠습니다.
: 결과물
SELECT
sum(case when groups='A' then score end) as 'A',
sum(case when groups='B' then score end) as 'B',
sum(case when groups='C' then score end) as 'C'
FROM Example;
- SQL의 열은 Select를 통해서 지정할 수 있습니다. Select에서 열을 지정한 후, case when 절을 통해서 집계된 데이터의 행과 열을 반전시킬 수 있습니다.
- 또한, 위의 예시처럼 한 행과 한 열을 반전시키는 것이 아니라 다른 열들을 포함하여 반전시킬 때는 case when와 group by를 함께 잘 붙여서 사용하는 Null 값 없이 잘 출력됩니다.
반응형
'Programming > SQL' 카테고리의 다른 글
[MySQL] 데이터 치환하기 (Replace, Update) (0) | 2022.11.17 |
---|---|
[MySQL] 테이블 목록 조회하기 (Show, information_schema) (0) | 2022.11.15 |
[SQL] 외래키 Foreign Key (1) | 2022.11.11 |
[SQL] 기본키 Primary Key (0) | 2022.10.30 |
[MySQL] auto_increment 자동증가 설정 (0) | 2022.10.26 |
댓글