728x90
2023.02.07 - [MySQL] - MySQL의 데이터 형식-4(시스템 정보 함수).MySQL
MySQL의 데이터 형식-4(시스템 정보 함수).MySQL
2023.02.07 - [MySQL] - MySQL의 데이터 형식-3(날짜 및 시간함수).MySQL MySQL의 데이터 형식-3(날짜 및 시간함수).MySQL 2023.02.07 - [MySQL] - MySQL의 데이터 형식-3(수학함수).MySQL MySQL의 데이터 형식-3(수학함수).My
less-go.tistory.com
이전 글에서 계속됩니다.
피벗의 구현
- 피벗(PIVOT) 이란?
- 한 열에 포함된 여러 값을 출력, 이를 여러 열로 변환하여 테이블 반환식 회전,
- 필요하면 집계까지 수행합니다.

use sqldb;
create table pivotTest(
uName char(3),
season char(2),
amount int
);
desc pivottest;
insert into pivottest values
('김범수', '겨울', 10), ('윤종신', '여름', 15),
('김범수', '가을',25), ('김범수', '봄', 3),
('김범수', '봄', 37),('윤종신', '겨울', 40),
('김범수', '여름', 14),('김범수', '겨울', 22),
('윤종신', '여름', 64);
select * from pivottest;
-- 피벗 구현 SUM() 과 IF(), GROUP BY
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;
select * from pivottest;
select season,
sum(if(uname='김범수', amount,0)) as '김범수',
sum(if(uname='윤종신', amount,0)) as '윤종신',
sum(amount) as '합계' from pivottest group by season;
JSON 데이터
- JSON(JavaScript Object Notation)이란?
- 웹과 모바일 응용 프로그램 등과 데이터 교환 하기 위한 개방형 표준 포맷
- 속성(key) 과 값(value)로 쌍을 이루며 구성
- JavaScript 언어에서 파생
- 포맷이 단순하고 공개되어 있기에 거의 대부분으 ㅣ프로그래밍 언어에서 쉽게 쓸슀거나 쓸수 있도록 코딩가능
- MySQL 5.7.8 부터 지원
- MySQL 8.0 에서는 인라인 패스라 불리는 - > 연산자 및 JSON_ARRAYAGG(), JSON_OBJECTAGG(), JSON_PRETTY(), JSON_STORAGE_SIZE(), JSON_STORAGE_FREE(), JSON_MERGE_PATCH() 등의 함수가 추가 되었습니다.
- json 데이터 : 일반적인 데이터 내용을 JSON 타입으로 변경해서 출력
-- 속성명 : 속성값 JSON 형태로 출력
use sqldb;
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" : 186}
]
}';
select JSON_VALID(@JSON) AS JSON_VALID; -- JSON 형식을 가지고 있는지 확인, 만족 : 1, 만족x : 0
SELECT JSON_SEARCH(@JSON, 'ONE', '성시경') AS JSON_SEARCH; -- 성시경의 위치를 확인, ONE : 첫번쨰 매칭, ALL : 모두
SELECT JSON_EXTRACT(@JSON, '$.USERTBL[2].NAME') AS JSON_EXTRACT; -- USERTBL[2].NAME 2행의 이름값 출력
SELECT JSON_INSERT(@JSON, '$.USERTTBL[0].MDATE', '2009-09-09') AS JSON_INSERT; -- USERTBL[0] 번째에 MDATE값 추가
SELECT JSON_REPALCE(@JSON, '$.USERTBL[0].NAME', '홍길동') AS JSON_REPLACE; -- 치환 USERTBL[0].NAME 이름을 변경
SELECT JSON_REMOVE(@JSON, '$.USERTBL[0]') AS JSON_REMOVE; -- 제거 USERTBL[0] 번째 값 제거
728x90
'MySQL' 카테고리의 다른 글
| 제약 조건.MySQL (0) | 2023.02.08 |
|---|---|
| 스토어드 프로시저(Procedure)를 이용한 프로그래밍.MySQL (0) | 2023.02.08 |
| MySQL의 데이터 형식-4(시스템 정보 함수).MySQL (0) | 2023.02.07 |
| MySQL의 데이터 형식-3(날짜 및 시간함수).MySQL (0) | 2023.02.07 |
| MySQL의 데이터 형식-3(수학함수).MySQL (0) | 2023.02.07 |