[mysql/oracle] 서울에 위치한 식당 목록 출력하기
2023. 9. 18. 22:41ㆍProgrammers/SQL
문제 설명
문제
결과
이상한 문제다.
결과처럼 나오도록 쿼리를 작성했건만 그럼 답이 아니라한다.
또 지역에 대해 잘 모르면 풀기 힘든 문제이다.
난이도는 어렵지 않으나, 이런 말도 안되는 조건들이 정답이 안 나오게 한다.
처음 틀린 코드
1
2
3
4
5
6
7
8
9
10
11
|
SELECT LPAD(A.REST_ID,5,0) REST_ID,
A.REST_NAME,
A.FOOD_TYPE,
A.FAVORITES,
A.ADDRESS,
TO_CHAR(ROUND(AVG(B.REVIEW_SCORE),2), 'FM99.90') 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 SCORE DESC, FAVORITES DESC
|
cs |
1. LPAD를 이용해 REST_ID의 왼쪽에 0이 채워지도록 했다.
REST_ID : 1 → 00001
2. TO_CHAR( , 'FM99.90')을 이용해 SCORE의 소수점 둘째자리까지 빈 곳에 0이 채워지도록 했다.
SCORE : 4.5 → 4.50
3. ADDRESS LIKE '%서울%'로 서울에 위치한 식당을 조건으로 걸었다.
이 틀린 코드를 이용하면 오라클에서도 문제에서 제시한 결과와 같이 REST_ID, SCORE에 0을 채워서
표현할 수 있다.
그러나 이 코드는 정답이 아니다.
3번이 문제가 되는 이유는 울산에 있는 서울산IC가 주소로 되어있어도 조건에 해당되기 때문이다.
이걸 내가 어떻게 알아
쨌든 SUBSTR로 처리했다.
1,2번은 뭐가 문제인지 모르겠다. 문제 오류 아닌가
mysql / oracle - 정답코드
1
2
3
4
5
6
7
8
9
10
11
|
SELECT A.REST_ID,
A.REST_NAME,
A.FOOD_TYPE,
A.FAVORITES,
A.ADDRESS,
ROUND(AVG(B.REVIEW_SCORE),2) SCORE
FROM REST_INFO A, REST_REVIEW B
WHERE A.REST_ID = B.REST_ID
AND SUBSTR(A.ADDRESS,1,2) = '서울'
GROUP BY A.REST_ID, A.REST_NAME, A.FOOD_TYPE, A.FAVORITES, A.ADDRESS
ORDER BY SCORE DESC, FAVORITES DESC
|
cs |
mysql 결과
→ 자동으로 REST_ID, SCORE에 0이 채워진다.
oracle 결과
→ REST_ID, SCORE에 0이 채워지지 않는다.
'Programmers > SQL' 카테고리의 다른 글
[mysql/oracle] 대여 기록이 존재하는 자동차 리스트 구하기 (0) | 2023.09.25 |
---|---|
[mysql/oracle] 조건에 맞는 사용자 정보 조회하기 (0) | 2023.09.25 |
[mysql/oracle] 조건별로 분류하여 주문상태 출력하기 (0) | 2023.09.09 |
[mysql/oracle] 우유와 요거트가 담긴 장바구니 (0) | 2023.09.04 |
[mysql/oracle] 보호소에 중성화한 동물 (0) | 2023.09.04 |