Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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
- 프로젝트
- 내일배움카드
- 프로그래머스
- 티스토리챌린지
- 어쩌다 마케팅
- R
- 파이썬 철저입문
- 내일배움
- 오블완
- MySQL
- 파이썬 머신러닝 완벽가이드
- 텍스트 분석
- 중회귀모형
- harkerrank
- 회귀분석
- 스파르타코딩
- 내일배움캠프
- TiL
- Cluster
- wil
- 미세먼지
- 파이썬 철저 입문
- 스파르타
- 파이썬
- 웹 스크랩핑
- SQL
- hackerrank
- 실전 데이터 분석 프로젝트
- 파이썬 머신러닝 완벽 가이드
- 스파르타 코딩
Archives
- Today
- Total
OkBublewrap
즐겨찾기가 가장 많은 식당 정보 출력하기 본문
<문제>
REST_INFO 테이블에서 음식종류별로 즐겨찾기 수가 가장 많은 식당의 음식 종류, ID, 식당 이름, 즐겨찾기수를 조회하는 SQL문을 작성해주세요. 이때 결과는 음식 종류를 기준으로 내림차순 정렬 해주세요.
<예시>
| REST_ID | REST_NAME | FOOD_TYPE |
| 00001 | 은돼지식당 | 한식 |
| 00002 | 하이가쯔네 | 일식 |
| 00003 | 따띠따띠뜨 | 양식 |
| 00004 | 스시사카우스 | 일식 |
| 00005 | 코슌스 | 일식 |
<예시 결과>
| FOOD_TYPE | REST_ID | REST_NAME |
| 한식 | 00001 | 은돼지식당 |
| 일식 | 00004 | 스시사카우스 |
| 양식 | 00003 | 따띠따띠뜨 |
<풀이>
SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
FROM REST_INFO
ORDER BY FOOD_TYPE DESC
| FOOD_TYPE | REST_ID | REST_NAME | FAVORITES |
| 한식 | 00001 | 은돼지식당 | 734 |
| 한식 | 00024 | 농실가찹쌀순대 | 12 |
| 한식 | 00022 | 군자네 | 101 |
| 한식 | 00021 | 강수곱창 | 210 |
| 한식 | 00020 | 신동태 | 550 |
| 한식 | 00017 | 방화동쭈꾸미마을 | 80 |
| 한식 | 00009 | 숙성돼지 | 143 |
| 한식 | 00010 | 맷돌우리콩감자탕 | 243 |
| 한식 | 00011 | 부암갈비 | 150 |
| 한식 | 00012 | 만다복 | 10 |
| 한식 | 00013 | 은성보쌈 | 10 |
| 한식 | 00014 | 동명항생선숯불구이 | 53 |
| 한식 | 00016 | 오대산산채전문점 | 230 |
| 중식 | 00015 | 만정 | 20 |
| 일식 | 00002 | 하이가쯔네 | 112 |
| 일식 | 00023 | 싹쓰리 | 42 |
| 일식 | 00005 | 코슌스 | 123 |
| 일식 | 00004 | 스시사카우스 | 230 |
| 양식 | 00007 | 소마바이 | 65 |
| 양식 | 00006 | 지아스나폴리 | 50 |
| 양식 | 00003 | 따띠따띠뜨 | 102 |
| 분식 | 00008 | 애플우스 | 151 |
| 분식 | 00018 | 가나안 | 51 |
| 분식 | 00019 | 에버그린 | 130 |
| 분식 | 00025 | 별미진 | 10 |
결과물은
| FOOD_TYPE | REST_ID | REST_NAME | FAVORITES |
| 한식 | 00001 | 은돼지식당 | 734 |
| 중식 | 00015 | 만정 | 20 |
| 일식 | 00004 | 스시사카우스 | 230 |
| 양식 | 00003 | 따띠따띠뜨 | 102 |
| 분식 | 00008 | 애플우스 | 151 |
이런 식으로 나와야 정답 처리가 된다. GROUP BY로 MAX를 했을 때 보면
SELECT FOOD_TYPE, REST_ID, REST_NAME, MAX(FAVORITES)
FROM REST_INFO
GROUP BY FOOD_TYPE
ORDER BY FOOD_TYPE DESC
| FOOD_TYPE | REST_ID | REST_NAME | MAX(FAVORITES) |
| 한식 | 00001 | 은돼지식당 | 734 |
| 중식 | 00015 | 만정 | 20 |
| 일식 | 00002 | 하이가쯔네 | 230 |
| 양식 | 00003 | 따띠따띠뜨 | 102 |
| 분식 | 00008 | 애플우스 | 151 |
일식 부분은 보면 MAX부분은 잘 나온 것을 볼 수 있는데 REST_ID, REST_NAME이 다른 것을 볼 수 가 있다.
MAX부분을 FOOD_TYPE으로 매칭을 해서 코드를 작성을 하면 될 것 같다.
1)
SELECT MAX(FAVORITES)
FROM REST_INFO
GROUP BY FOOD_TYPE
| MAX(FAVORITES) |
| 734 |
| 230 |
| 102 |
| 151 |
| 20 |
FOOD_TYPE별 최대값을 출력을 했다.
2)
SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
FROM REST_INFO
WHERE FAVORITES IN (
SELECT MAX(FAVORITES)
FROM REST_INFO
GROUP BY FOOD_TYPE
)
| FOOD_TYPE | REST_ID | REST_NAME | FAVORITES |
| 한식 | 00001 | 은돼지식당 | 734 |
| 양식 | 00003 | 따띠따띠뜨 | 102 |
| 일식 | 00004 | 스시사카우스 | 230 |
| 분식 | 00008 | 애플우스 | 151 |
| 중식 | 00015 | 만정 | 20 |
| 한식 | 00016 | 오대산산채전문점 | 230 |
이런식으로 출력을 하면 230이 한식에도 일식에도 있기 때문에 한식에 두개가 출력이 된다.
3)
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
| FOOD_TYPE | REST_ID | REST_NAME | FAVORITES |
| 한식 | 00001 | 은돼지식당 | 734 |
| 중식 | 00015 | 만정 | 20 |
| 일식 | 00004 | 스시사카우스 | 230 |
| 양식 | 00003 | 따띠따띠뜨 | 102 |
| 분식 | 00008 | 애플우스 | 151 |
GROUP BY를 한번더 써서 한식을 하나만 쓰게 했다. 이렇게 되면 MAX의 FAVORITES에 대응할 수 없는 것 같다.
이부분은 SELECT 절에 MAX(FAVORITES)를 써서 정리하면 올바르게 나올 것 같다. 위의 쿼리도 정답처리가 된다.
4)
SELECT FOOD_TYPE, REST_ID, REST_NAME, MAX(FAVORITES) AS 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
'개발 > SQL' 카테고리의 다른 글
| 자동차 대여 기록 별 대여 금액 구하기 (0) | 2025.01.10 |
|---|---|
| 헤비 유저가 소유한 장소 (0) | 2023.03.13 |
| 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 (0) | 2023.03.13 |
| 조건에 맞는 사용자 정보 조회하기 (0) | 2023.03.12 |
| 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 (0) | 2023.03.12 |