SQL/프로그래머스
[SQL] 프로그래머스 [Level-4] 서울에 위치한 식당 목록 출력하기
SeungyubLee
2022. 12. 2. 15:15
<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