2023. 4. 10. 10:09ㆍ개발공부 기강잡자/SQL
서울에 위치한 식당 목록 출력하기
문제
REST_INFO와 REST_REVIEW 테이블에서 서울에 위치한 식당들의 식당 ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수를 조회하는 SQL문을 작성해주세요. 이때 리뷰 평균점수는 소수점 세 번째 자리에서 반올림 해주시고 결과는 평균점수를 기준으로 내림차순 정렬해주시고, 평균점수가 같다면 즐겨찾기수를 기준으로 내림차순 정렬해주세요.
https://school.programmers.co.kr/learn/courses/30/lessons/131118
정답코드
이 문제에서 주의해야할 점
1. 리뷰가 없는 식당을 출력을 원치 않는 것 같다.
처음에는 LEFT OUTER JOIN
으로 리뷰 테이블과(REST_REVIEW
) 조인해서 리뷰가 없는 식당의 경우, IFNULL<c/ode>을 사용해서 0을 출력하도록 했다.
그런데 틀렸습니다!
그냥 INNER JOIN
을 사용해서 리뷰 데이블에 (REST_REVIEW
) 리뷰 데이터가 없는 경우 SELECT
하지 않도록 처리해야한다.
2. 정렬 조건 꼭 확인하기
오름차순 : ASC
내림차순 : DESC
3. 평균 계산한 컬럼 등은 출력 결과를 참고해서 Alias Name (AS
) 지정해서 출력하기.
4. 서울 지역 식당으로 조건걸 때, 데이터 확인하고 조건 걸기.
처음에는 예시 데이터만 보고 서울 지역의 식당은 '서울특별시'로 시작할 것이라 생각하고 '서울특별시%'라고 SELECT
했다.
'서울특별시'가 아니라 '서울시'로 주소가 저장되어있는 경우가 있기 때문에 LIKE
조건으로 '서울%'을 걸어야 한다.
+ 다른 풀이들 보니까 LIKE 조건으로 '서울%'이 아니라, '%서울%' 이라고 하면 틀린다고 한다.
기억해둬야할 MySQL 문법
1. ISNULL
이 아니라 IFNULL
IFNULL(column, '대체값')
: column의 값이 NULL
일 경우 '대체값' 출력
2. 반올림 함수 ROUND
ROUND(column, 자릿수)
: 자릿수 + 1의 자리에서 반올림한다.
👇
ROUND(3.1236, 2)
→ 3.12 출력 (소숫점 셋째자리에서 반올림, 둘째자리까지 출력)
ROUND(3.1236, 3)
→ 3.124 출력 (소숫점 넷째자리에서 반올림, 셋째자리까지 출력)
3. 계산간 평균(AVG
) 컬럼을 Alias name으로 ORDER BY
절에서 사용가능하다.
'개발공부 기강잡자 > SQL' 카테고리의 다른 글
[MYSQL] 조건문 - IF문 (프로그래머스_자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기) (0) | 2023.04.23 |
---|---|
[MYSQL] 프로그래머스_자동차 대여 기록 별 대여 금액 구하기 (DATEDIFF/CASE WHEN/PIVOT) (0) | 2023.04.22 |
[MYSQL] 문자열 추출 : SUBSTR, SUBSTRING (0) | 2023.04.21 |
[MySQL] Date Format 변환 (0) | 2023.04.10 |