사용 언어 - MYSQL
프로그래머스 LV 4) 우유와 요거트가 담긴 장바구니
https://school.programmers.co.kr/learn/courses/30/lessons/62284
정답
서브쿼리, DISTINCT (정답 맞춘 여부 O)
1. FROM 서브쿼리절에서 NAME이 우유나 요거트인 경우에만 뽑아주기
2. CART_ID로 그루핑한 후 개수 세주기만 했더니, 오류 뜬다. 우유만 두개, 요거트만 두개있는 경우가 있기 때문!!!
3. FROM 서브쿼리절에서 뽑을 때 애초에 DISTINCT를 걸어서 중복인 친구들을 제거해주면,
4. 우유&요거트가 각각 1개 이상 무조건 들어있는 장바구니를 뽑을 수 있다.
SELECT CART_ID
FROM (
SELECT DISTINCT CART_ID, NAME
FROM CART_PRODUCTS
WHERE NAME IN ('Milk', 'Yogurt')
) AS C
GROUP BY CART_ID
HAVING COUNT(*) >= 2;
충격적인 정답
HAVING COUNT(DISTINCT NAME) = 2
굳이 FROM 서브쿼리절을 사용하지 않아도 HAVING을 할 때 DISTINCT되어 개수를 세준다..
SELECT CART_ID
FROM CART_PRODUCTS
WHERE NAME IN ('Milk','Yogurt')
GROUP BY CART_ID
HAVING COUNT(DISTINCT NAME)=2
레퍼런스
- 정답 깃허브
'Stay Hungry Stay Foolish > SQL' 카테고리의 다른 글
코테 전에 보려고 만든, SQL 총정리!!! (0) | 2023.10.06 |
---|---|
[MYSQL] 보호소에서 중성화환 동물 (0) | 2023.10.04 |
[MYSQL] 헤비 유저가 소유한 장소 (0) | 2023.10.04 |
[MYSQL] 5월 식품들의 총매출 구하기 (1) | 2023.10.04 |
[MYSQL] 상품을 구매한 회원 비율 구하기 (0) | 2023.10.04 |
댓글