61번 - 서울에서 위치한 식당 목록 출력하기
REST_INFO와 REST_REVIEW 테이블에서 서울에 위치한 식당들의 식당 ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수를 조회하는 SQL문을 작성해주세요. 이때 리뷰 평균점수는 소수점 세 번째 자리에서 반올림 해주시고 결과는 평균점수를 기준으로 내림차순 정렬해주시고, 평균점수가 같다면 즐겨찾기수를 기준으로 내림차순 정렬해주세요.
<나의 풀이>
select a.rest_id,
a.rest_name,
a.food_type,
a.favorites,
a.address,
round(avg(b.review_score), 2) avg_score
from rest_info a inner join rest_review b on a.rest_id=b.rest_id
where address like '서울%'
group by a.rest_id
order by avg_score desc, a.favorites desc
JOIN문을 이용한 문제 풀이
1. 조회 : 식당 이름, 음식 종류, 즐겨찾기 수, 주소, 리뷰평균 점수
2. 리뷰평균 점수
1) 평균 점수 먼저 내기 -- avg(b.review_score)
2)소수점 세 번째 자리에서 반올림-- round(avg(b.review_score), 2)
3. rest_id로 join문 결합
4. 조건 : 서울에 위치한 식당들이기 때문에 --> address like '서울%'
5. 식당 이름별로 그룹화 해주기
6. 순서: 평균점수를 기준으로 내림차순 정렬한 뒤 평균점수가 같다면 즐겨찾기수를 기준으로 내림차순 정렬 --> order by avg_score desc, a.favorites desc
AVG() - 평균을 내는 함수
ROUND(숫자(컬럼), (반올림 기준))
숫자(컬럼) : 반올림할 대상 숫자
반올림 기준: 소수점 자릴 수 지정(필수 아님)
지정하지 않을 경우 소수점 첫번째 자리를 사용반올림 기준을 정하는 자릿 수에서 -1을 붙일 경우 소수점 기준으로 오른쪽이 아닌 왼쪽을 반올림 대상을 정하는 것SELECT ROUND(10.349) -- 10 SELECT ROUND(10.349, 1) -- 10.3 SELECT ROUND(10.349, 2) -- 10.35 SELECT ROUND(10.349, -1) -- 10 SELECT ROUND(11.546) -- 12 SELECT ROUND(11.546, 1) -- 11.5 SELECT ROUND(11.546, 2) -- 11.54 SELECT ROUND(11.546, -1) -- 10
참고 사이트 : https://velog.io/@donghoim/MySQL-SQL-ROUND-FLOOR-CEIL-함수
'CODEKATA' 카테고리의 다른 글
[MySQL] 자동차 평균 대여 기간 구하기 (0) | 2024.07.22 |
---|---|
[Python] 음양 더하기 (0) | 2024.07.19 |
[Python] 나누어 떨어지는 숫자 배열 (0) | 2024.07.18 |
[MySQL] 년, 월, 성별 별 상품 구매 회원 수 구하기 (0) | 2024.07.18 |
[Python] 서울에서 김 서방 찾기 (0) | 2024.07.17 |