https://school.programmers.co.kr/learn/courses/30/lessons/131123
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
REST_INFO 테이블에서 음식종류별로 즐겨찾기수가 가장 많은 식당의 음식 종류, ID, 식당 이름, 즐겨찾기수를 조회하는 SQL문을 작성해주세요. 이때 결과는 음식 종류를 기준으로 내림차순 정렬해주세요.
이 문제를 보고 group by 음식 종류를 하고, max값을 가져오면 된다고 생각했다.
SELECT FOOD_TYPE, REST_ID, REST_NAME, MAX(FAVORITES)
FROM REST_INFO
GROUP BY FOOD_TYPE
ORDER BY FOOD_TYPE DESC;
하지만, 답이 계속 틀려서 다른 사람들의 설명들을 찾아보던 중 어떤 점이 틀렸는지 알 수 있었다.
GROUP BY를 했을 때, 즐겨찾기 순서로 정렬된 값이 아닌 첫번째 값들을 가져오기 때문에 틀렸다.
따라서, 서브쿼리를 사용하여 즐겨찾기 순서를 찾아야 했는데, 처음엔 = 연산자를 사용했다. 하지만, = 연산자를 사용하면 단일 값 비교만 가능하기 때문에 원하는 값을 찾을 수 없다. 지금 우리는 음식 종류, 즐겨찾기 컬럼을 비교해야 하기 때문에 여러 값을 비교할 땐 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
이렇게 두개 컬럼으로 묶은 다음에 즐겨찾기의 최대 값을 찾고, group by 하면 되는 문제였다.
참고:
https://jaehwaseo.tistory.com/24
프로그래머스 즐겨찾기가 가장 많은 식당 정보 출력하기 SQL(MySQL)
문제 다음은 식당의 정보를 담은 REST_INFO 테이블입니다. REST_INFO 테이블은 다음과 같으며 REST_ID, REST_NAME, FOOD_TYPE, VIEWS, FAVORITES, PARKING_LOT, ADDRESS, TEL은 식당 ID, 식당 이름, 음식 종류, 조회수, 즐겨찾
jaehwaseo.tistory.com
'Algorithm > 프로그래머스' 카테고리의 다른 글
조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 (1) | 2024.12.30 |
---|---|
자동차 평균 대여 기간 구하기 (1) | 2024.12.29 |
SQL (1) | 2024.12.23 |
[프로그래머스] Lv.3 징검다리 건너기 (1) | 2024.09.26 |
[프로그래머스] Lv.3 합승 택시 요금 (0) | 2024.08.13 |