728x90
61. 서울에 위치한 식당 목록 출력하기
문제 REST_INFO와 REST_REVIEW 테이블에서 서울에 위치한 식당들의 식당 ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수를 조회하는 SQL문을 작성해주세요. 이때 리뷰 평균점수는 소수점 세 번째 자리에서 반올림 해주시고 결과는 평균점수를 기준으로 내림차순 정렬해주시고, 평균점수가 같다면 즐겨찾기수를 기준으로 내림차순 정렬
select i.rest_id,
i.rest_name,
i.food_type,
i.favorites,
i.address,
round(avg(r.review_score), 2) as score
from rest_info i join rest_review r on i.rest_id = r.rest_id
where i.address like ('서울%')
group by 1,2,3,4,5
order by score desc, i.favorites desc
1) 이 문제는 서브쿼리를 만들 필요 없음. 한 번의 JOIN+GROUP BY+집계함수로 모든 요구사항을 충족할 수 있음
-- 표에서 group by의 1,2,3,4가 모두 1 하나로 묶어진 것이니까
2) '서울%' 이걸로 해야함
65. 우유와 요거트가 담긴 장바구니
문제 데이터 분석 팀에서는 우유(Milk)와 요거트(Yogurt)를 동시에 구입한 장바구니가 있는지 알아보려 합니다. 우유와 요거트를 동시에 구입한 장바구니의 아이디를 조회하는 SQL 문을 작성해주세요. 이때 결과는 장바구니의 아이디 순으로 나와야 합니다.
select cart_id
from cart_products
where name in ('Milk', 'Yogurt')
group by cart_id
having count(distinct name) = 2
order by cart_id
1) 서브쿼리 필요 없음
2) 일단 name in ('Milk', 'Yogurt')를 통해 우유, 요구르트 목록 추출
3) count(distinct name) 을 해주기 위해서 group by 필수
4) count(distinct name)을 해줘서 우유와 요구르트 둘 다 있는 경우 확인 가능
728x90
'오답노트 > SQL_1차' 카테고리의 다른 글
DAY 17. 문제 66~70 (Lv.5) (2) | 2025.06.09 |
---|---|
DAY 15. 문제 51~60 (Lv.4) (6) | 2025.06.03 |
DAY 14. 문제 31~50 (Lv.3) (8) | 2025.05.31 |
DAY 13. 문제 11~30 (Lv.2) (6) | 2025.05.31 |
DAY 12. 문제 1~10 (Lv.1) (0) | 2025.05.31 |