프로그래머스 SQL - 60번(GROUP BY와 DISTINCT)

yeyeyeyeye·2025년 7월 30일

📊 SQL에서 GROUP BY와 DISTINCT의 차이: 언제 어떤 걸 써야 할까?
SQL에서 데이터를 집계할 때 자주 헷갈리는 개념이 바로 GROUP BY와 DISTINCT입니다.
특히, 사용자 수를 셀 때와 거래 건수를 셀 때 어떤 걸 써야 하는지 정확히 구분해두면 문제를 더 잘 풀 수 있어요!

✅ 핵심 개념 요약
GROUP BY: 데이터를 특정 기준으로 묶는 것
DISTINCT: 중복을 제거하는 것
COUNT(*): 모든 행의 개수 (중복 포함)
COUNT(DISTINCT 컬럼): 고유한 값의 개수 (중복 제거)


예시
user_id gender sales_date
1 F 2022-03-01
1 F 2022-03-10
2 F 2022-03-20

  1. 거래 건수가 궁금할 때
SELECT 
    YEAR(sales_date) AS year,
    MONTH(sales_date) AS month,
    COUNT(*) AS transactions
FROM online_sale
GROUP BY year, month;

결과: 같은 사람이 여러 번 샀으면 그만큼 건수로 계산됨

👉 실제 거래 횟수(행 개수)를 알고 싶을 때 사용


  1. 실제 사용자 수가 궁금할 때
SELECT 
    YEAR(sales_date) AS year,
    MONTH(sales_date) AS month,
    COUNT(DISTINCT user_id) AS users
FROM online_sale
GROUP BY year, month;

결과: 중복된 user_id는 한 번만 셈

👉 "이 달에 몇 명이 구매에 참여했는가?"를 알고 싶을 때 사용


상황별 정리

"이 달에 총 몇 건의 거래가 있었을까?": count() -> 모든 거래 건수
"이 달에 실제로 몇 명이 구매 했을까?": count(DISTINCT user_id) -> 고유 사용자 수
"성별별 거래 건수는?": group by gender + count(
)
"성별별 구매자 수는?": GROUP BY gender + COUNT(DISTINCT user_id)

결론
GROUP BY는 데이터를 묶고, DISTINCT는 중복을 제거한다.

실제 유저 수가 궁금하면 → COUNT(DISTINCT user_id)
거래 건수가 궁금하면 → COUNT(*)

profile
안녕하세요? 데이터분석가 되고 싶어요.

0개의 댓글