프로그래머스/SQL

프로그래머스 SQL - 서울에 위치한 식당 목록 출력하기

리콜 2024. 7. 15. 09:42

https://school.programmers.co.kr/learn/courses/30/lessons/131118

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제. 서울에 위치한 식당 목록 출력하기

풀이 코드.

-- REST_INFO와 REST_REVIEW 테이블에서 서울에 위치한 식당들의 식당 ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수를 조회하는 SQL문을 작성해주세요.
-- 이때 리뷰 평균점수는 소수점 세 번째 자리에서 반올림 해주시고 결과는 평균점수를 기준으로 내림차순 정렬해주시고, 평균점수가 같다면 즐겨찾기수를 기준으로 내림차순 정렬해주세요.
SELECT INFO.REST_ID, INFO.REST_NAME, FOOD_TYPE, FAVORITES, ADDRESS, ROUND(AVG(REVIEW_SCORE), 2) AS SCORE
FROM REST_INFO AS INFO
JOIN REST_REVIEW AS REVIEW
ON INFO.REST_ID = REVIEW.REST_ID
WHERE INFO.ADDRESS LIKE '서울%'
GROUP BY INFO.REST_ID
ORDER BY SCORE DESC, FAVORITES DESC;

평균을 구하는 avg는 기억났지만 반올림하는 ROUND함수가 기억이 나지 않았다.

ROUND를 하면 기본은 소수점 첫번째 자리에서 반올림 한다.

두번재 매개변수를 주게 되면 해당 수에 맞게 소수점 자리를 맞춘다.

2라고 되어 있으면 3번째 자리에서 반올림한다.

group by 를 안넣었더니 모든 평균 점수를 구하는데 답은 하나로 나와서 계속 뭐가 틀린지 찾기가 어려웠다.

틀렸던 풀이

-- REST_INFO와 REST_REVIEW 테이블에서 서울에 위치한 식당들의 식당 ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수를 조회하는 SQL문을 작성해주세요.
-- 이때 리뷰 평균점수는 소수점 세 번째 자리에서 반올림 해주시고 결과는 평균점수를 기준으로 내림차순 정렬해주시고, 평균점수가 같다면 즐겨찾기수를 기준으로 내림차순 정렬해주세요.
SELECT INFO.REST_ID, INFO.REST_NAME, FOOD_TYPE, FAVORITES, ADDRESS, ROUND(AVG(REVIEW_SCORE), 2) AS SCORE
FROM REST_INFO AS INFO
JOIN REST_REVIEW AS REVIEW
ON INFO.REST_ID = REVIEW.REST_ID
WHERE INFO.ADDRESS LIKE '서울%'
ORDER BY SCORE DESC, FAVORITES DESC;

반응형