코드 그라데이션

Day05-2. 피벗 JSON 본문

Database/Mega-MySQL

Day05-2. 피벗 JSON

완벽한 장면 2023. 6. 20. 22:00

피벗

: 한 열에 포함된 여러 값을 출력하고,

  이를 여러 열로 변환하여 테이블 반환 식을 회전하고, 필요하면 집계까지 수행하는 것.

 

샘플 데이터 넣고 결과 출력하기

CREATE TABLE pivotTest
	(uName CHAR(3),
	 season CHAR(2),
	 amount INT );
INSERT INTO pivotTest VALUES
	('김범수','겨울', 10), ('윤종신', '여름',15), ('김범수', '가을', 25),
    ('김범수', '봄', 3), ('김범수','봄', 37), ('윤종신','겨울', 40),
    ('김범수', '여름', 14), ('김범수', '겨울', 22), ('윤종신', '여름', 64);
select *from pivotTest;

 

사람 이름별로 기준을 나눠보면

SELECT uName, 
	sum(if(season = '봄', amount, 0)) as '봄',
    sum(if(season = '여름', amount, 0)) as '여름',
    sum(if(season = '가을', amount, 0)) as '가을',
    sum(if(season = '겨울', amount, 0)) as '겨울',
    sum(amount) as '합계' FROM pivotTest GROUP BY uName;

실행 결과

 

비타민 퀴즈 - 계절별로 분류되어 나오게 만들기

-- 비타민 퀴즈 7-3.
SELECT season,
	sum(if(uName = '김범수', amount, 0)) as '김범수', 
    -- if문 안이면 uName이 김범수이면 amount를 출력하고, 없으면 0 적어라.
    sum(if(uName = '윤종신', amount, 0)) as '윤종신',
    sum(amount) as '합계' FROM pivotTest GROUP BY season;

실행 결과

 

JSON(Javascript Object Notation)

: JSON은 현대 웹과 모바일 응용 프로그램 등과 데이터를 교환하기 위한 개방형 표준 포맷.

=> 속성과 값으로 쌍을 이루며 구성되어 있음.

 

예시

SELECT JSON_OBJECT('name', name, 'height', height) AS 'JSON 값'
		FROM usertbl
        WHERE height >=180;

SET @jSON = '{ "usertbl" :
		[
			{"name":"임재범", "height":182},
            {"name":"이승기", "height":182},
            {"name":"성시경", "height":182}
        ]
}';

 

SELECT JSON_VALID(@json) AS JSON_VALID;
SELECT JSON_SEARCH(@json, 'one', '성시경') AS JSON_SEARCH;
SELECT JSON_EXTRACT(@json, '$.usertbl[2].name') AS JSON_EXTRACT;
SELECT JSON_INSERT(@json, '$.usertbl[0].mDate', '2009-09-09') AS JSON_INSERT;
SELECT JSON_REPLACE(@json , '$.usertbl[0].name', '홍길동') AS JSON_REPLACE;
SELECT JSON_REMOVE(@json , '$.usertbl[0]') AS JSON_REMOVE;

1
2
3
4
5
6

 

728x90

'Database > Mega-MySQL' 카테고리의 다른 글

Day06. SELF JOIN, UNION(ALL), (NOT)IN  (0) 2023.06.22
Day05-3. OUTER JOIN, CROSS JOIN  (0) 2023.06.21
Day05-1. Join - INNER JOIN  (0) 2023.06.20
Day04-3. MySQL 내장 함수  (0) 2023.06.20
Day04-1. UPDATE, DELETE FROM  (0) 2023.06.19
Comments