<MySQL>
SELECT A.REST_ID
, A.REST_NAME
, A.FOOD_TYPE
, A.FAVORITES
, A.ADDRESS
, ROUND(AVG(IFNULL(NULLIF(B.REVIEW_SCORE, ''), 0)), 2) AS SCORE
FROM REST_INFO A
, REST_REVIEW B
WHERE A.REST_ID = B.REST_ID
AND A.ADDRESS LIKE '서울%'
GROUP BY A.REST_ID
ORDER BY ROUND(AVG(IFNULL(NULLIF(B.REVIEW_SCORE, ''), 0)), 2) DESC, A.FAVORITES DESC
<Oracle>
SELECT A.REST_ID
, A.REST_NAME
, A.FOOD_TYPE
, A.FAVORITES
, A.ADDRESS
, ROUND(AVG(NVL(B.REVIEW_SCORE, 0)), 2) AS SCORE
FROM REST_INFO A
, REST_REVIEW B
WHERE A.REST_ID = B.REST_ID
AND A.ADDRESS LIKE '서울%'
GROUP BY A.REST_ID, A.REST_NAME, A.FOOD_TYPE, A.FAVORITES, A.ADDRESS
ORDER BY ROUND(AVG(NVL(B.REVIEW_SCORE, 0)), 2) DESC, A.FAVORITES DESC
평균 계산 함수 AVG 사용 시 주의할 점
SCORE 값이 NULL이거나 빈 값일 경우 0으로 평균 계산에 포함시키려면
<MySQL> : IFNULL(NULLIF(컬럼, ''), 컬럼 값이 NULL이거나 빈 값일 경우 보여줄 값)
=> AVG(IFNULL(NULLIF(SCORE, ''), 0))
<Oracle> : NVL(컬럼, 컬럼 값이 NULL이거나 빈 값일 경우 보여줄 값)
=> AVG(NVL(SCORE, 0))
프로그래머스 서울에 위치한 식당 목록 출력하기 SQL
'SQL > 프로그래머스' 카테고리의 다른 글
[SQL] 프로그래머스 [Level-4] 그룹별 조건에 맞는 식당 목록 출력하기 (0) | 2022.12.02 |
---|---|
[SQL] 프로그래머스 [Level-4] 식품분류별 가장 비싼 식품의 정보 조회하기 (0) | 2022.12.02 |
[SQL] 프로그래머스 [Level-4] 오프라인/온라인 판매 데이터 통합하기 (0) | 2022.12.02 |
[SQL] 프로그래머스 [Level-4] 취소되지 않은 진료 예약 조회하기 (0) | 2022.12.02 |
[SQL] 프로그래머스 [Level-4] 주문량이 많은 아이스크림들 조회하기 (0) | 2022.12.02 |