728x90
📚문제
📝풀이
# 오답코드
SELECT FOOD_TYPE
, REST_ID
, REST_NAME
, MAX(FAVORITES) AS FAVORITES
FROM REST_INFO
GROUP BY FOOD_TYPE
ORDER BY FOOD_TYPE DESC
너무 당연하게 위의 코드처럼 풀었는데 오답이 나왔다...
구글링해서 찾아보니 서브쿼리를 사용해서 풀었는데 값은 똑같이 나왔다
그러다가 한 분이 남겨놓은 링크를 타고 들어가서 해법을 얻었다
GROUP BY로 묶으면 묶이는 그룹(여기선 FOOD_TYPE)의 가장 상단의 데이터를 가져온다
기억하자!
이유는 쿼리의 실행순서 때문
# 정답코드
SELECT *
FROM REST_INFO
WHERE (FOOD_TYPE,FAVORITES) IN (SELECT FOOD_TYPE, MAX(FAVORITES)
FROM REST_INFO
GROUP BY FOOD_TYPE)
SELECT FOOD_TYPE, MAX(FAVORITES)
FROM REST_INFO
GROUP BY FOOD_TYPE
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
데이터리안에서 GA4수업을 먼저 수강하기로해서 실전반은 수강을 못했다( 입문반만 들어서 서브쿼리는 아직 낯설다)
그래도 언젠간 해야하니 조금씩 뜯어보면서 익숙해지자
WHERE (조건컬럼1,조건컬럼2...) IN ( SQL쿼리문 ) 구조
1. WHERE 구문에서 FOOD_TYPE과 FAVORITES 컬럼을 이용하여 필터링
3. IN () 안에 원하는 조건을 가진 새로운 테이블 생성
4. 해당 테이블에서 필요한 컬럼(이미 필터링 되어있음) 가져오기
이런 흐름인것 같다
SELECT FOOD_TYPE
, REST_ID
, REST_NAME
, FAVORITES
FROM REST_INFO
WHERE FAVORITES IN (SELECT MAX(FAVORITES)
FROM REST_INFO
GROUP BY FOOD_TYPE)
GROUP BY FOOD_TYPE
ORDER BY FOOD_TYPE DESC
이제 이런 풀이가 자연스럽게 나오게 됐다
728x90
'SQL > 프로그래머스 SQL 고득점 kit' 카테고리의 다른 글
SQL 고득점 Kit / GROUP BY / 년,월,성별 별 상품 구매 회원 수 구하기 /MySQL (0) | 2023.10.31 |
---|---|
SQL 고득점 Kit / GROUP BY / 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 / MySQL (0) | 2023.10.27 |
SQL 고득점 Kit / SELECT / 오프라인-온라인 판매 데이터 통합하기 / MySQL (0) | 2023.10.20 |
SQL 고득점 Kit / SELECT / 재구매가 일어난 상품과 회원 리스트 구하기 / MySQL (0) | 2023.10.19 |
SQL 고득점 kit / SELECT / 서울에 위치한 식당 목록 출력하기(GROUP BY) (1) | 2023.10.10 |