집계함수, JOIN, JSON_ARRAYGG를 활용하여,
하기와 같이 데이터를 가공 및 추출해보았습니다.
* '음식'테이블을 활용합니다.
* 카테고리는 '고기', '분식', '중식', '한식', '일식'의 5종 입니다.
- 구현 목표 -
1. 카테고리 별 메뉴의 갯수를 출력합니다.
2. 카테고리 별 가장 저렴한 메뉴의 단가를 출력합니다.
3. 카테고리 별 가장 저렴한 메뉴의 이름을 출력합니다.
실행 쿼리문은 하기와 같습니다.
----------------------------------------------------------------------------------------
WITH temp AS ( 👈 카테고리 별 메뉴 갯수, 가장 저렴한 단가를 출력하기 위해 temp 테이블 생성
SELECT category AS 카테고리
, count(category) AS 카테고리_별_음식_수 👈 카테고리 별 메뉴 갯수 출력(구현목표 1번)
, min(unitprice) AS 카테고리_별_가장_저렴한_단가 👈 카테고리 별 가장 저렴한 메뉴의 단가를 출력(구현목표 2번)
FROM food
GROUP BY category
)
SELECT food.category AS 카테고리 👈 주 쿼리문 시작
, 카테고리_별_음식_수,
카테고리_별_가장_저렴한_단가
, JSON_ARRAYAGG( 👈 카테고리별 가장 저렴한 메뉴의 이름을 출력(구현목표 3번)
JSON_OBJECT(
"name", food.name))AS 카테고리_별_가장_싼_음식의_이름
FROM food
JOIN temp 👈 필요자료 가공을 위해 테이블 결합
ON temp.카테고리_별_가장_저렴한_단가 = food.unitprice 👈 테이블 결합 조건 지정
AND temp.카테고리 = food.category
GROUP BY category;
----------------------------------------------------------------------------------------
하기와 같이 정상적으로 출력됩니다.
'웹개발자공부 > MySQL' 카테고리의 다른 글
MySQL - AWS RDS 배포 시 .env파일 작성 예시 (0) | 2023.01.03 |
---|---|
MySQL - Integer Types(정수 타입) 데이터 할당 크기 (0) | 2022.12.15 |
MySQL - TypeORM을 사용하여 node.js서버 API 작성하기 (0) | 2022.10.19 |
MySQL - 이름에 공백(스페이스)이 들어간 데이터베이스 선택하기 (0) | 2022.10.18 |
MySQL - MySQL을 통해 자료 보관하기 (0) | 2022.10.18 |