1. 문제 목적
FLOOR 함수와 GROUP BY를 활용하여 데이터 범위를 동적으로 계산하고 그룹화하는 방법을 학습하는 것이다.
숫자 데이터(PRICE)를 특정 단위(만 단위)로 그룹화하고 각 그룹별로 레코드의 개수를 계산하며 이를 정렬하여 결과를 출력하는 과정에서 숫자 기반 데이터 처리 및 집계 기술을 익히는 것을 목표로 한다.
2. 핵심 개념
FLOOR 함수
- 정의: 숫자 값을 내림하여 가장 가까운 정수로 반환하는 함수.
FLOOR(숫자 값)
- 특징:숫자 데이터를 특정 단위로 그룹화하거나 범위를 설정할 때 유용하다.
- 소수점을 제거하고 정수 값으로 내림 처리한다.
FLOOR(19999 / 10000) * 10000 -- 결과: 10000
COUNT 함수
- 정의: 특정 열 또는 레코드의 개수를 계산하는 집계 함수.
SELECT COUNT(*)
FROM 테이블명;
- 주요 특징:특정 열을 지정할 경우, NULL이 아닌 값만 카운트.
- COUNT(*): 모든 레코드를 계산.
GROUP BY
- 정의: 데이터를 특정 열 값을 기준으로 그룹화하여 각 그룹별 요약 결과를 반환.
SELECT 열1, COUNT(*)
FROM 테이블명
GROUP BY 열1;
3. 문제 해결 절차
- 데이터 분석:
- PRICE 열을 기준으로 상품을 만 단위로 그룹화해야 한다.
- FLOOR 함수를 사용하여 가격을 나눈 뒤 내림 처리로 가격 그룹을 설정한다.
- 가격 그룹화:
- PRICE 값을 10000으로 나눈 뒤 내림(FLOOR)하여 가격 그룹(PRICE_GROUP)을 생성한다.
- 그룹화된 가격 그룹은 10000 단위로 표시한다.
- 상품 개수 계산:
- GROUP BY를 사용하여 가격 그룹별로 데이터를 그룹화하고 COUNT 함수로 각 그룹의 상품 개수를 계산한다.
- 결과 정렬:
- 가격 그룹을 기준으로 오름차순 정렬하여 결과를 출력한다.
- SQL 작성 및 실행:
- 위의 요구 사항을 반영한 SQL을 작성하고 테스트한다.
4. 코드 작성
-- 가격대 별 상품 개수를 구하는 SQL
SELECT
FLOOR(PRICE / 10000) * 10000 AS `PRICE_GROUP`, -- PRICE를 만 단위로 그룹화
COUNT(*) AS `PRODUCTS` -- 각 가격대별 상품 개수 계산
FROM
PRODUCT -- 상품 데이터를 포함한 테이블
GROUP BY
`PRICE_GROUP` -- PRICE_GROUP으로 그룹화
ORDER BY
`PRICE_GROUP` ASC; -- 가격대를 기준으로 오름차순 정렬
5. 코드 분석
SELECT 절
- FLOOR(PRICE / 10000) * 10000 AS PRICE_GROUP:예: 19999 → 10000, 23000 → 20000.
- PRICE 값을 10000으로 나눈 뒤 내림 처리하여 만 단위 가격 그룹을 생성.
- COUNT(*) AS PRODUCTS:
- 각 가격 그룹에 속한 상품의 개수를 계산하여 PRODUCTS 열에 저장.
FROM 절
- PRODUCT:
- 상품 데이터를 포함한 테이블.
GROUP BY 절
- PRICE_GROUP:
- PRICE_GROUP을 기준으로 데이터를 그룹화하여 집계 함수가 적용되도록 설정.
ORDER BY 절
- PRICE_GROUP ASC:
- 가격 그룹을 기준으로 오름차순 정렬하여 결과를 출력.
'SQL Kit > GROUP BY' 카테고리의 다른 글
노선별 평균 역 사이 거리 조회하기 [ 프로그래머스 | SQL Kit | Level 2 ] (0) | 2025.03.09 |
---|---|
조건에 맞는 사원 정보 조회하기 [ 프로그래머스 | SQL Kit | Level 2 ] (0) | 2025.03.09 |
입양 시각 구하기(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 |