SQL- where절에 in 사용

HJ·2024년 5월 12일

SQL_TIL(since_20240415)

목록 보기
9/15

1. rest_info 테이블에서 음식별로 즐겨찾기수가 가장 많은 식당의 음식 종류, ID, 식당 이름, 즐겨찾기수를 조회하는 SQL문을 작성해주세요. 이때 결과는 음식 종류를 기준으로 내림차순 정렬해주세요.

1) 음식별로

group by food_type

2) 즐겨찾기수가 가장 많은

max(favorites)

3) 음식 종류, ID, 식당 이름, 즐겨찾기 수를 조회하는 SQL문

select food_type, rest_id, rest_name, favorites

4) 결과는 음식 종류를 기준으로 내림차순 정렬해주세요.

order by food_type desc

여기까지 캐치한 뒤, 이제 본격적으로 코드를 짜보자.

정답.

그냥 max(favorites)를 해버리면, favorites가 가장 높은 food_type은 출력되지만, rest_id와 rest_name은 다른 값이 출력되기 때문에 오답이다.

where 절에 in 을 사용해야한다.

  • IN을 사용하면,
  • where (추출하고자 하는 컬럼1, 컬럼2의 조건을) in (이 조건과 같은애들로 설정해서 subquery 밖에 있는 애들까지 적용시켜줘)
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;

= 음식 종류별 최대 즐겨찾기 수를 구하고, 그것에 대한 식당 ID와 이름을 구해줘.

where 절에 in을 사용해서 subquery문을 활용할 수 있고,
단일컬럼일땐,

where food_type in (select ...)

두가지 이상의 컬럼명을 사용할 땐, ()를 활용하면 된다.

where (food_type, favorites) in (select ...)
profile
First time, Last time, Every time.

0개의 댓글