SQL/MYSQL

프로그래머스 MYSQL 과일로만든 아이스크림 고르기

Jey78 2022. 12. 8. 12:24

요즘은 코딩테스트를 위한 다양한 사이트들이 있어서 혼자 공부하는데 도움이 많이 된다.

틈틈이 프로그래머스에서 MYSQL을 연습하고 있는데 풀이와 과정을 공유하면 좋을 것 같아서 올려본다.

 

 

문제. 상반기 아이스크림 총주문량이 3,000보다 높으면서 아이스크림의 주 성분이 과일인 아이스크림의 맛을 총주문량이 큰 순서대로 조회하는 SQL 문을 작성해주세요.

 

1. 나의 답

SELECT f.FLAVOR
FROM FIRST_HALF as f
JOIN ICECREAM_INFO as i on f.FLAVOR = i.FLAVOR
WHERE f.TOTAL_ORDER > "3000" AND i.INGREDIENT_TYPE LIKE "%fruit_based%"
ORDER BY f.TOTAL_ORDER DESC;

 

2. 왜 이렇게 생각했나

SELECT f.FLAVOR
FROM FIRST_HALF as f
JOIN ICECREAM_INFO as i on f.FLAVOR = i.FLAVOR

상반기 아이스크림 주문 정보는 FIRST_HALF, 아이스크림 성분은 ICECREAM_INFO에 들어있다. 그렇기 때문에 이 두가지 테이블을 모두 활용해야 하는데, 문제에서 요구하는 것은 결국 아이스크림의 맛 한가지.

두가지 모두를 from에 넣을 필요가 없이 구문에서 더 많이 쓰일 것 같은 FIRST_HALF의 FLAVOR을 선택하고 ICECREAM_INFO를 JOIN으로 넣었다.

WHERE f.TOTAL_ORDER > "3000" AND i.INGREDIENT_TYPE LIKE "%fruit_based%"
ORDER BY f.TOTAL_ORDER DESC;

문제에서 제기한 주문량이 3000이 넘고 주 성분이 과일인 조건을 맞추기 위하여 f.TOTAL_ORDER > "3000" 과 i.INGREDIENT_TYPE에서 fruit_based를 찾아주었다.

마지막으로 주문량 f.TOTAL_OREDER 을 내림차순으로 하면 끝!

 

3. 만난오류

WHERE f.TOTAL_ORDER > "3000" AND i.INGREDIENT_TYPE LIKE "%fruit_based%"

WHERE에서 만난 오류인데 첫번째는 " "

WHERE f.TOTAL_ORDER > 3000

숫자를 그대로 넣었더니 에러가 떴다. " "를 잊지말자.

두번째는 AND

WHERE f.TOTAL_ORDER > "3000" 
WHERE i.INGREDIENT_TYPE LIKE "%fruit_based%"

문제를 보며 하나씩 적다보니 WHERE을 나눠서 적게 되었고 에러를 맞이하게 되었다. AND로 묶어서 쓰도록 하자.