HAVING을 위한 GROUP BY

도로롱·2025년 8월 9일

⭐목적:

해당 섹션은 프로그래머스/리트코드/해커랭커 등 외부 사이트에서 SQL 오답 문제에 대한 오답을 적고, 어느 부분에서 막혔고, 무엇을 배웠는지에 대해 간략하게 기록 하기 위함임.


❤️오답노트 활용 팁

  1. 원인 분석에 집중하세요: 정답 코드를 이해하는 것보다 내가 왜 틀렸는지를 한두 줄이라도 직접 글로 써보는 과정이 가장 중요합니다. '실수했다'에서 그치지 않고 '왜 실수했는지'를 파고들어야 같은 실수를 반복하지 않습니다.

  2. 태그를 적극적으로 활용하세요: #JOIN, #서브쿼리, #날짜함수 와 같이 태그를 꾸준히 달아두면, 나중에 특정 개념이 약하다고 느낄 때 해당 태그가 달린 문제들만 모아서 복습할 수 있습니다.

  3. 주기적으로 다시 풀어보세요: 일주일 뒤, 한 달 뒤에 오답 노트를 보면서 코드를 보지 않고 다시 한번 풀어보세요. 완벽하게 풀 수 있다면 그 개념은 이제 당신의 것이 된 겁니다.

⭐ 오답 노트 TEMPLATE

📆 날짜: 2025-08-09

📌 문제 정보

📝 문제 요약

  • [예: '재구매가 일어난 회원 리스트 조회']

✅ 정답 코드 및 핵심 로직

-- 재구매 조건: USER_ID와 PRODUCT_ID가 동일해야 한다.
SELECT
    USER_ID,
    PRODUCT_ID
    # COUNT(USER_ID)
FROM
    ONLINE_SALE
GROUP BY
    1,2
HAVING
    COUNT(*) >=2  #--- 2번 삼 = 재구매
ORDER BY
    1,2 DESC;

📚 핵심 개념 및 배운 점

  • 주요 함수/문법: HAVING 조건을 쓰기 위한 GROUP BY

  • 배운 점:
    ① GROUP BY를 쓸 수 있는 조건
    - 집계 함수가 있는 경우, SELECT 절에 기재한 모든 컬럼
    - 집계 함수가 없는 경우, SELECT 절에 기재한 모든 컬럼
    - SELECT 절에는 없지만 PRIMARY KEY인 경우
    ② HAVING
    - SELECT 절에서 집계 함수를 쓰지 않은 경우 GROUP BY를 동일한 컬럼으로 명시 하고 그 이후에 HAVING을 적으면, WHERE과 같은 조건값을 넣을 수 있다.

4번 제외 모두 GROUP BY 뒤 컬럼을 제대로 기재함 (2개의 컬럼 모두 써야함)

profile
질문 없는 성장은 없다. 3년차 데이터 분석가

2개의 댓글

comment-user-thumbnail
2025년 8월 17일

select절 컬럼을 집계함수 없이 group by ---> unique같은 효과

답글 달기
comment-user-thumbnail
2025년 8월 17일

+) select절에 다른집계함수 (Sum) 을 쓰고 Having절에 count를 써도 됨

답글 달기