Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 폴더구조
- bfs dfs
- 티스토리챌린지
- 자료구조
- 비트마스킹
- springboot
- BFS
- Navigation
- 창의충전소
- react
- React Native
- 휴대폰 기기
- 구현
- 오블완
- web view
- Project Bee
- FlatList
- ReactNative
- 경우의 수
- service 테스트
- 노마드코더
- 버튼 활성화
- 상속 관계 매핑
- 해외 대외활동
- React Natvive
- 원복
- multipart upload
- 완전탐색
- 이영직
- 백준 1992
Archives
- Today
- Total
유미의 기록들
[프로그래머스] 즐겨찾기가 가장 많은 식당 정보 출력하기 본문
728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/131123
📌 문제
REST_INFO 테이블에서 음식종류별로 즐겨찾기수가 가장 많은 식당의 음식 종류, ID, 식당 이름, 즐겨찾기수를 조회하는 SQL문을 작성해주세요. 이때 결과는 음식 종류를 기준으로 내림차순 정렬해주세요.
📝풀이과정
처음에는 음식종류별로 즐겨찾기 수가 가장 많은 식당을 조회하라고 했으니 FOOD_TYPE을 GROUP BY로 하고FAVORITES을 MAX로 구하면 되겠다고 생각했다
SELECT FOOD_TYPE,REST_ID,REST_NAME, MAX(FAVORITES) AS FAVORITES FROM REST_INFO
GROUP BY FOOD_TYPE
ORDER BY FOOD_TYPE DESC
하지만 오답이 났고, 다른사람의 풀이를 찾아보았는데, MAX가 아닌 서브쿼리를 통해 각 FOOD_TYPE별로 FAVORITES의 최대값을 찾아야 한다는 것이다
왜 MAX() 로 되지 않을까?
먼저 다음 쿼리를 실행해보면
SELECT * FROM REST_INFO
REST_ID 순서로 정렬된 테이블이 나온다.
여기서 FOOD_TYPE을 GROUP BY로 묶으면
SELECT * FROM REST_INFO
GROUP BY FOOD_TYPE
즐겨찾기 수가 가장 많은 식당의 정보가 아닌 테이블에서 가장 위에 있는 식당 정보를 가지고 오는 것이다
SELECT REST_ID, REST_NAME,FOOD_TYPE, MAX(FAVORITES) FROM REST_INFO
GROUP BY FOOD_TYPE
여기서 보면 일식에서 가장 즐겨찾기가 많은 식당은 230의 수로 스시사카우스 식당인데 위의 결과값은 하이가쯔네라는 식당이 나온다. 즉, FOOD_TYPE별로 최대값을 가져오는 것은 맞으나, 각 FOOD_TYPE별로 최대 FAVORITES을 가지는 REST_ID와 REST_NAME이 올바르게 선택되지 않는다
따라서 서브쿼리를 사용해서 각 FOOD_TYPE별로 최대 FAVORITES 값을 먼저 뽑고, 최대 FAVORITES에 해당하는 행을 WHERE문으로 찾아야 한다
SELECT MAX(FAVORITES) FROM REST_INFO GROUP BY FOOD_TYPE //서브쿼리
💻 정답 코드
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
일식에서 가장 즐겨찾기가 많은 식당은 230의 수로 스시사카우스 식당이 나오는 것을 확인할 수 있다!!
728x90
반응형
'코딩테스트 기록 > SQL 문제' 카테고리의 다른 글
[프로그래머스] 년, 월, 성별 별 상품 구매 회원 수 구하기 (1) | 2024.09.03 |
---|---|
[프로그래머스] 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 (1) | 2024.08.28 |
[프로그래머스] 조건에 맞는 사용자 정보 조회하기 (0) | 2024.08.26 |
[프로그래머스] 재구매가 일어난 상품과 회원 리스트 구하기 (0) | 2024.08.26 |
Comments