SELECT
FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
FROM
REST_INFO AS r1
WHERE
FAVORITES = (
SELECT MAX(FAVORITES)
FROM REST_INFO AS r2
WHERE r1.FOOD_TYPE = r2.FOOD_TYPE
)
ORDER BY
FOOD_TYPE DESC;
- SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES: FOOD_TYPE, REST_ID, REST_NAME, FAVORITES 열을 선택합니다.
- FROM REST_INFO AS r1: REST_INFO 테이블을 r1이라는 별칭으로 사용합니다.
- WHERE FAVORITES = (SELECT MAX(FAVORITES) ...): 각 음식 종류별로 가장 많은 즐겨찾기 수를 가진 식당을 찾기 위해 서브쿼리를 사용합니다.
- FROM REST_INFO AS r2: 동일한 푸드 타입에 속하는 다른 식당들을 r2로 지정합니다.
- WHERE r1.FOOD_TYPE = r2.FOOD_TYPE: r1과 r2의 음식 종류가 동일한지 비교합니다.
- ORDER BY FOOD_TYPE DESC: 결과를 음식 종류를 기준으로 내림차순으로 정렬합니다.
만약 5. WHERE r1.FOOD_TYPE = r2.FOOD_TYPE 구문을 생략한다면,
서브쿼리는 모든 레코드에서 가장 높은 FAVORITES 값을 반환할 것입니다.
그렇게 되면 모든 음식 종류에 대해 가장 높은 즐겨찾기 수를 가진 식당이 선택될 것입니다.
즉, 서브쿼리에서 어떠한 필터링이 없기 때문에 가장 높은 즐겨찾기 수를 가진 식당이 무엇이든 간에 모든 음식 종류에 대해 반환될 것입니다.
결과적으로, 각 음식 종류별로 가장 높은 즐겨찾기 수를 가진 식당을 찾기 위해서는 WHERE r1.FOOD_TYPE = r2.FOOD_TYPE와 같은 필터링이 필요합니다.
'ㅋㅌ' 카테고리의 다른 글
[SQL] JOIN (0) | 2023.09.17 |
---|---|
[SQL] WHERE 절 안에 WHERE ,,! (0) | 2023.09.14 |
[SQL] FLOOR (0) | 2023.09.11 |
LEFT, GROUP BY (0) | 2023.09.10 |
[SQL] GROUP BY (1) | 2023.09.08 |