아래와 같은 테이블이 있다고 가정한다.
TABLE Name: football_heritage
id | team | trophy | value | etc |
1 | 레알 마드리드 | LEAGUE | 25 | 20C |
2 | FC 바르셀로나 | LEAGUE | 14 | 20C |
3 | 바이에른 뮌헨 | LEAGUE | 20 | 20C |
4 | 유벤투스 | LEAGUE | 36 | 20C |
5 | 리버풀 | LEAGUE | 18 | 20C |
6 | AC밀란 | LEAGUE | 14 | 20C |
7 | 레알 마드리드 | CHAMPIONS LEAGUE | 13 | - |
8 | FC 바르셀로나 | CHAMPIONS LEAGUE | 5 | - |
9 | 바이에른 뮌헨 | CHAMPIONS LEAGUE | 6 | - |
10 | 유벤투스 | CHAMPIONS LEAGUE | 2 | - |
11 | 리버풀 | CHAMPIONS LEAGUE | 6 | - |
12 | AC밀란 | CHAMPIONS LEAGUE | 7 | - |
13 | 레알 마드리드 | DOMAIN CUP | 19 | - |
14 | FC 바르셀로나 | DOMAIN CUP | 31 | - |
15 | 바이에른 뮌헨 | DOMAIN CUP | 20 | - |
16 | 유벤투스 | DOMAIN CUP | 14 | - |
17 | 리버풀 | DOMAIN CUP | 7 | - |
18 | AC밀란 | DOMAIN CUP | 5 | - |
19 | 레알 마드리드 | LEAGUE | 10 | 21C |
20 | FC 바르셀로나 | LEAGUE | 12 | 21C |
21 | 바이에른 뮌헨 | LEAGUE | 11 | 21C |
22 | 리버풀 | LEAGUE | 1 | 21C |
23 | AC밀란 | LEAGUE | 4 | 21C |
각 팀의 대회별 우승횟수를 조회하는 표를 출력하기 위해 피벗을 구현한 쿼리이다.
SUM(IF~)) 를 활용한 방법이다.
SELECT
FH.team,
SUM(IF(FH.trophy = 'LEAGUE', FH.value, 0) AS 'LEAGUE',
SUM(IF(FH.trophy = 'DOMAIN CUP', FH.value, 0) AS 'DOMAIN CUP',
SUM(IF(FH.trophy = 'CHAMPIONS LEAGUE', FH.value, 0) AS 'CHAMPIONS LEAGUE',
SUM(FH.value) AS 'ALL'
FROM football_heritage AS FH
GROUP BY FH.team
결과
team | LEAGUE | DOMAIN CUP | CHAMPIONS LEAGUE |
레알 마드리드 | 35 | 19 | 13 |
FC 바르셀로나 | 26 | 31 | 5 |
바이에른 뮌헨 | 31 | 20 | 6 |
유벤투스 | 36 | 14 | 2 |
리버풀 | 19 | 7 | 6 |
AC밀란 | 18 | 5 | 7 |
'MySQL' 카테고리의 다른 글
15. EXISTS : 조건에 해당하는 ROW의 존재 유무 확인 (0) | 2023.07.27 |
---|---|
14. JOIN(두 개 이상의 테이블을 참조) (0) | 2022.05.03 |
12. 숫자 함수 & 날짜 시간 함수 (0) | 2022.05.03 |
11. 문자열 함수(CONCAT, CONCAT_WS, FORMAT, LEFT, RIGHT, SUBSTRING_INDEX) (0) | 2022.05.03 |
10. 제어 흐름(IF, IFNULL, NULLIF, CASE~ WHEN~) (0) | 2022.05.03 |