1. 문제목적
JOIN과 GROUP BY, 집계 함수(SUM)를 활용하여 두 테이블 간 데이터를 결합하고 특정 그룹 기준으로 집계 연산을 수행하는 방법을 학습하는 것이다. ORDER BY를 통해 결과를 정렬하고 원하는 순서로 데이터를 출력하는 과정도 포함된다.
2. 핵심개념
JOIN
- 정의: 두 개 이상의 테이블을 특정 공통 키를 기준으로 결합하여 데이터를 조회하는 연산.
SELECT table1.column1, table2.column2
FROM table1
JOIN table2
ON table1.common_column = table2.common_column;
GROUP BY
- 정의: 데이터를 특정 컬럼 기준으로 그룹화하여 집계 연산을 수행할 수 있도록 하는 절.
SELECT column, SUM(value)
FROM table
GROUP BY column;
SUM
- 정의: 특정 컬럼의 값을 모두 더하는 집계 함수.
SELECT SUM(column) FROM table;
ORDER BY
- 정의: 결과 데이터를 특정 컬럼 기준으로 정렬.
SELECT * FROM table
ORDER BY column ASC; -- 오름차순
ORDER BY column DESC; -- 내림차순
3. 문제해결 절차
- 데이터 분석
- FIRST_HALF 테이블: 아이스크림의 맛(FLAVOR), 총 주문량(TOTAL_ORDER)을 포함.
- ICECREAM_INFO 테이블: 각 맛의 성분(INGREDIENT_TYPE) 정보를 포함.
- 이 두 테이블을 FLAVOR를 기준으로 결합해야 한다.
- 그룹화 및 집계
- 각 성분 유형(INGREDIENT_TYPE)을 기준으로 그룹화하고, 총 주문량(TOTAL_ORDER)을 계산한다.
- 정렬
- 총 주문량을 기준으로 오름차순 정렬하여 결과를 출력한다.
4. 코드작성
-- 성분 유형별 총 주문량을 계산하고 정렬
SELECT
I.INGREDIENT_TYPE, -- 성분 유형
SUM(F.TOTAL_ORDER) AS TOTAL_ORDER -- 각 성분 유형별 총 주문량
FROM
FIRST_HALF AS F -- FIRST_HALF 테이블을 F로 별칭 지정
JOIN
ICECREAM_INFO AS I -- ICECREAM_INFO 테이블을 I로 별칭 지정
ON
F.FLAVOR = I.FLAVOR -- FLAVOR를 기준으로 두 테이블 결합
GROUP BY
I.INGREDIENT_TYPE -- 성분 유형별로 그룹화
ORDER BY
TOTAL_ORDER ASC; -- 총 주문량 기준 오름차순 정렬
5. 코드분석
SELECT
- I.INGREDIENT_TYPE: 성분 유형을 출력.
- SUM(F.TOTAL_ORDER) AS TOTAL_ORDER: 각 성분 유형별 총 주문량을 계산하고 TOTAL_ORDER라는 별칭으로 출력.
FROM과 JOIN
- FIRST_HALF AS F: 아이스크림 맛과 주문량이 있는 테이블.
- ICECREAM_INFO AS I: 아이스크림 맛과 성분 정보가 있는 테이블.
- ON F.FLAVOR = I.FLAVOR: 두 테이블을 FLAVOR를 기준으로 조인.
GROUP BY
- I.INGREDIENT_TYPE: 성분 유형별로 데이터를 그룹화하여 집계 연산 수행.
ORDER BY
- TOTAL_ORDER ASC: 총 주문량을 기준으로 오름차순 정렬.
'SQL Kit > GROUP BY' 카테고리의 다른 글
입양 시각 구하기(1) [ 프로그래머스 | SQL Kit | Level 2 ] (0) | 2025.03.09 |
---|---|
고양이와 개는 몇 마리 있을까 [ 프로그래머스 | SQL Kit | Level 2 ] (0) | 2025.03.09 |
진료과별 총 예약 횟수 출력하기 [ 프로그래머스 | SQL Kit | Level 2 ] (0) | 2025.03.04 |
자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 [ 프로그래머스 | SQL Kit | Level 2 ] (0) | 2025.03.04 |
동명 동물 수 찾기 [ 프로그래머스 | SQL Kit | Level 2 ] (0) | 2025.03.04 |