집계함수, JOIN, JSON_ARRAYGG를 활용하여,

하기와 같이 데이터를 가공 및 추출해보았습니다.

 

* '음식'테이블을 활용합니다.

* 카테고리는 '고기', '분식', '중식', '한식', '일식'의 5종 입니다.

 

- 구현 목표 -

 

1. 카테고리 별 메뉴의 갯수를 출력합니다.

2. 카테고리 별 가장 저렴한 메뉴의 단가를 출력합니다.

3. 카테고리 별 가장 저렴한 메뉴의 이름을 출력합니다.

 

데이터를 추출 할 'food' 테이블

 

실행 쿼리문은 하기와 같습니다.

----------------------------------------------------------------------------------------

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;

----------------------------------------------------------------------------------------

 

하기와 같이 정상적으로 출력됩니다.

쿼리문 실행 결과

 

+ Recent posts