코딩테스트 연습 > GROUP BY > 재구매가 일어난 상품과 회원 리스트 구하기
난이도: Lv.2
언어: MySQL
https://school.programmers.co.kr/learn/courses/30/lessons/131536
실패
SELECT a.USER_ID, a.PRODUCT_ID
FROM ONLINE_SALE a
GROUP BY a.USER_ID, a.PRODUCT_ID
ORDER BY a.USER_ID ASC, a.PRODUCT_ID DESC
실패이유
1. 그냥 구매만 한 데이터도 출력되고 있음
"재구매"와 관련된 코드가 없음
성공
SELECT a.USER_ID, a.PRODUCT_ID
FROM ONLINE_SALE a
GROUP BY a.USER_ID, a.PRODUCT_ID
HAVING COUNT(a.PRODUCT_ID) > 1
ORDER BY a.USER_ID ASC, a.PRODUCT_ID DESC
이 쿼리를 짜면서, GROUP을 지을 때 그룹을 순차적으로 적어주는데 그럼 앞에꺼가 그룹화 된 이후에 뒤에꺼가 그룹화 되는건가? 라는 의문이 들었습니다.
일단 한 번에 그룹화 되는 것이라 생각하고 HAVING절을 추가한 후 제출하니 통과가 되었습니다. 이후 찾아봤더니 순차적으로 그룹화가 되는 것이 아니라 한 묶음으로 그룹화가 되는 것을 알 수 있었습니다.
*참고 chatGPT
GROUP BY 구문은 여러 개의 열을 사용하여 그룹을 지정할 수 있습니다. 이때 지정한 열들의 조합에 따라 그룹이 형성됩니다. 여러 개의 열을 사용할 경우, 그룹은 각 열의 조합에 따라 형성됩니다.
예를 들어, 다음과 같은 쿼리에서는 GROUP BY가 두 개의 열을 사용하고 있습니다.
SELECT department, employee_type, COUNT(*)
FROM employees
GROUP BY department, employee_type;
위의 쿼리는 부서(department)와 직원 유형(employee_type)에 따라 집계를 수행합니다. 따라서 부서와 직원 유형의 조합에 따라 각각의 그룹이 형성됩니다.
그룹이 순차적으로 적용되는 것이 아니라, 지정한 열들의 조합에 따라 한 번에 적용됩니다. 결과적으로 각각의 그룹에 대한 집계 함수(예: COUNT, SUM)가 계산됩니다.
코드에 질문이 있으시면 댓글을 달아주세요. 최대한 빠른 시일 내에 답변해드리겠습니다.
봐주셔서 감사합니다.
'Study > SQL' 카테고리의 다른 글
[프로그래머스 SQL] 3월에 태어난 여성 회원 목록 출력하기 (0) | 2024.01.12 |
---|---|
[프로그래머스 SQL] 가격대 별 상품 개수 구하기 (0) | 2024.01.12 |
[프로그래머스 SQL] 진료과별 총 예약 횟수 출력하기 (0) | 2024.01.12 |
[프로그래머스 SQL] 성분으로 구분한 아이스크림 총 주문량 (0) | 2024.01.12 |
[프로그래머스 SQL] 조건에 맞는 도서와 저자 리스트 출력하기 (0) | 2024.01.12 |