Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

집 짓는 개발블로그

[프로그래머스] 재구매가 일어난 상품과 회원 리스트 구하기 (MySQL) - 2개 이상의 분류로 GROUP BY하기 본문

MySQL

[프로그래머스] 재구매가 일어난 상품과 회원 리스트 구하기 (MySQL) - 2개 이상의 분류로 GROUP BY하기

취준er 2024. 8. 13. 19:31

https://school.programmers.co.kr/learn/courses/30/lessons/131536

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이를 시도하다가 group by 다음에 두 개의 컬럼을 쓰고 싶었다. 근데 그게 되는 거였나 헷갈렸다...

정리의 필요성을 느꼈다. ^^ 

 

제출한 쿼리

SELECT USER_ID, PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING COUNT(SALES_DATE) >= 2
ORDER BY USER_ID, PRODUCT_ID DESC;

두 개 이상의 컬럼으로 그룹핑한 것을 확인할 수 있다. 

 

 

 

참고할만한 글을 소개한다. 

https://dev.mysql.com/doc/refman/8.0/en/group-by-modifiers.html

 

MySQL :: MySQL 8.0 Reference Manual :: 14.19.2 GROUP BY Modifiers

14.19.2 GROUP BY Modifiers The GROUP BY clause permits a WITH ROLLUP modifier that causes summary output to include extra rows that represent higher-level (that is, super-aggregate) summary operations. ROLLUP thus enables you to answer questions at multip

dev.mysql.com

 

 

내가 궁금한 group by 부분은 다음과 같다.

 

ROLLUP은 일단 제쳐두고, year, country, product 3개의 컬럼으로 그룹핑한 결과를 살펴본다. 대분류인 year, 중분류인 country, 소분류인 product를 순서대로 확인할 수 있다. 

(year-country-product)가 통째로 한 개의 기준이 되어 그룹핑에 활용된다고 생각하면 이해가 쉽다.

위 예시에서는 2000-Finland-Computer와 2000-Finland-Phone이 대분류와 중분류는 같지만, 사실 서로 다른 그룹에 속한다.