피벗테이블 실습
>>> tb_test 테이블을 다음과 같이 출력하시오
▼기존 tb_test 테이블

▼출력할 형태

>>> 구문 작성
/* if문을 사용한 피벗테이블 */
SELECT
t.t_season AS '계절',
SUM(if (t.t_name='김성주', t.t_amount, 0)) AS '김성주',
SUM(if(t.t_name='정동영', t.t_amount, 0)) AS '정동영',
SUM(t.t_amount) AS '합계'
FROM
tb_test AS t
GROUP BY t.t_season;
/* case문을 사용한 피벗테이블 */
SELECT
t.t_season AS '계절',
SUM(case
when t.t_name='김성주' then t.t_amount
ELSE
0
END) AS '김성주',
SUM(case
when t.t_name='정동영' then t.t_amount
ELSE
0
END) AS '정동영',
SUM(t.t_amount) AS '합계'
FROM
tb_test AS t
GROUP BY t.t_season;
>>> 결과확인

>>> if 구문을 사용하여 IF(조건, 조건에 부합할 때의 출력, 조건에 부합하지 않을때의 출력) 형태로 작성하여 피벗테이블 작성.(CASE구문은 WHEN에 조건, THEN에 조건부합시 출력, ELSE에 조건미부합시 출력의 형태로 작성하였다.)
그룹콘캣(GROUP_CONCAT) 실습
>>> 구매자별 구매이력 중 상품별로 구매수량이 20개 이상인 상품의 목록을 추출하여 다음과 같이 조회하여라.
▼출력할 형태

>>> 구문작성
SELECT
result.m_id AS '구매자아이디',
result.m_name AS '구매자명',
GROUP_CONCAT(result.g_name) AS '상품목록'
FROM
(SELECT
m.m_id,
m.m_name,
g.g_name
FROM
tb_member AS m
INNER JOIN
tb_order AS o
ON
m.m_id = o.o_id
INNER JOIN
tb_goods AS g
ON
o.o_g_code = g.g_code
GROUP BY m.m_id, g.g_code
HAVING SUM(o.o_amount) >= 20) AS result
GROUP BY result.m_id;
>>> 결과확인

>>> GROUP BY, HAVING의 실행순서를 파악하고 FROM구절에 INNER JOIN을 사용하여 구문을 작성하였다.
'DBMS' 카테고리의 다른 글
MySQL - 사용자 정의 함수(프로시저와 차이점) (0) | 2023.05.15 |
---|---|
MySQL - 프로시저 (0) | 2023.05.15 |
SQL - 서브쿼리 (0) | 2023.05.15 |
SQL - JOIN (0) | 2023.05.15 |
MySQL 데이터 타입과 내장 함수 (0) | 2023.05.15 |