✅ 코드
SELECT CART_ID
FROM CART_PRODUCTS
WHERE NAME IN ('Milk', 'Yogurt')
GROUP BY CART_ID
HAVING COUNT(DISTINCT NAME) = 2
ORDER BY CART_ID
GROUP BY와 HAVING문을 사용한 풀이입니다.
핵심은 HAVING문에서 DISTINCT 키워드를 사용했다는 점입니다.
🔎 참고
WITH MILK_YOGURT_CARTS AS (
SELECT CART_ID
, CASE
WHEN SUM(IF(NAME IN ('Milk', 'Yogurt'), 1, 0)) = 2 THEN 'O'
ELSE 'X'
END AS TARGET
FROM CART_PRODUCTS
GROUP BY CART_ID
)
SELECT CART_ID
FROM MILK_YOGURT_CARTS
WHERE TARGET = 'O'
ORDER BY CART_ID
위 풀이가 통과되지 않는 이유는 YOGURT 값만 2개 존재하는 카트ID가 존재 가능하기 때문입니다.
이 경우에는 MILK는 없지만 2라는 조건을 충족해서 결과값으로 출력됩니다.
'알고리즘' 카테고리의 다른 글
[SQL]프로그래머스 Lv.4 오프라인/온라인 판매 데이터 통합하기 (0) | 2024.01.16 |
---|---|
[SQL]프로그래머스 Lv.4 주문량이 많은 아이스크림들 조회하기 (0) | 2024.01.16 |
[SQL]프로그래머스 Lv.4 5월 식품들의 총매출 조회하기 (0) | 2024.01.16 |
[SQL]해커랭크 Binary Tree Nodes (0) | 2024.01.10 |
[SQL]해커랭크 Top Competitors (0) | 2023.12.16 |