SQL/프로그래머스 SQL 고득점 kit
SQL 고득점 Kit / SELECT / 재구매가 일어난 상품과 회원 리스트 구하기 / MySQL
박혀노
2023. 10. 19. 14:27
728x90
📚문제
📝풀이
SELECT USER_ID
, PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID,PRODUCT_ID
HAVING COUNT(*) >= 2
ORDER BY USER_ID, PRODUCT_ID DESC
USER_ID와 PRODUCT_ID로 그룹화 한것까지는 잘 됐는데
HAVING절 사용법에서 잠깐 헷갈렸다
WHERE절과의 차이점은 알고있는데 이렇게 한 번 헷갈리면 머릿속이 꼬이는 느낌
"GROUP화가 완료된 데이터들"에 대해서만 조건으로 필터링
(GROUP화된 데이터 안의 컬럼 사용해야함)
(+ 근데 GROUP화만 하고 모든행을 살펴보면 HAVING COUNT(*)>=2인 경우가 USER_ID =15,119인데
같은 물품을 2번주문한 기록이 없는데 왜 정답인지 모르겠다)
HAVING절에 대한 내용 찾아보다가 내가 찾고 있던 내용이 있어서 가져와봤다
이미 GROUP화 된 컬럼에 대해서는 몇개가 묶인건지 알 길이 없는데
HAVING과 집계함수를 사용하여 알 수 있다
(사실 그래도 좀 헷갈리지만... 많이 해봐야 될 것 같다)
SELECT USER_ID
, PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID,PRODUCT_ID
HAVING COUNT(*) >= 2
ORDER BY USER_ID, PRODUCT_ID DESC
몇달 전까지만 해도 HAVING 사용법이 헷갈려서 블로그에 작성해놓았는데
지금 풀어보니까 바로 풀린다...
신기하네
역시 꾸준히 하면 조금씩 나아지는구나
앞으로도 계속 열심히 해야겠다
728x90