
SQL 공부중 입니다. ✍✍✍
문제
https://school.programmers.co.kr/learn/courses/30/lessons/131123
풀이
SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
FROM REST_INFO
GROUP BY FOOD_TYPE
HAVING FAVORITES = MAX(FAVORITES)
ORDER BY FOOD_TYPE DESC;
이번 문제는 조금 까다로웠습니다. 문제에서 요구하듯 FOOD_TYPE 별로 FAVORITES가 가장 많은 식당을 구해야했는데 위 SQL 구문으로 작성 시

'일식' FOOD_TYPE 이 출력되지 않아 고민 끝에 다른 유저들의 풀이를 참고하여 해결하였습니다.😔😔😔
아래와 같이 WHERE - IN 구문안에 서브쿼리를 활용한 풀이입니다.
SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
FROM REST_INFO
WHERE (FOOD_TYPE,FAVORITES) IN
(SELECT FOOD_TYPE, MAX(FAVORITES) FROM REST_INFO GROUP BY FOOD_TYPE)
ORDER BY FOOD_TYPE DESC;
WHERE (컬럼1,컬럼2) IN (SELECT 컬럼1,컬럼2 FROM~)은 처음보는 형태의 SQL구문이었습니다. GROUP BY 구문을 서브쿼리로 작성하고 SELECT 된 값들을 조건문으로 비교하는 방식이었습니다. 앞으로 이와 같이 WHERE 조건문에도 서브쿼리를 적용하는 방식으로도 해결해보도록 하겠습니다.🐼🐼🐼
감사합니다.