문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/131118
답.
SELECT REST_ID, REST_NAME, FOOD_TYPE, FAVORITES, ADDRESS, ROUND(AVG(REVIEW_SCORE), 2) SCORE
FROM REST_INFO JOIN REST_REVIEW USING(REST_ID)
WHERE ADDRESS LIKE '서울%'
GROUP BY REST_ID
ORDER BY SCORE DESC, FAVORITES DESC
내부 동작 순서
1. FROM 절
REST_INFO 테이블의 별칭을 I 로하고 REST_REVIEW 테이블의 별칭을 R로 하며 그 둘을 NNER JOIN 한다.
2. WHERE 절
ADDRESS는 LIKE키워드와 '%'와일드카드를 사용하여 '서울'로 시작하는 모든 행을 필터링한다.
3. GROUP BY 절
REST_ID는 식당 별로 유니크하므로 그룹화할 때 사용한다.
4. SELECT 절
REST_INFO 테이블의 별칭을 I로 설정하였으니, I의 REST_ID, REST_NAME, FOOD_TYPE, FAVORITES, ADDRESS 컬럼 값과
REST_REVIEW테이블의 별칭을 R로 설정하였으니, R의 REVIEW_SCORE의 평균을 구하는데, ROUND함수 사용하여 반올림할 거고 2번째 자리까지는 꼭 보이도록 하며 그 컬럼의 별칭을 SCORE로 한다.
5. ORDER BY 절
SCORE 컬럼값을 내림차순으로 한 뒤 SCORE 값이 같은 행은 FAVORITES 컬럼의 값을 내림차순으로 정렬한다.
초기 코드
SELECT I.REST_ID, I.REST_NAME, I.FOOD_TYPE, I.FAVORITES, I.ADDRESS, ROUND(AVG(R.REVIEW_SCORE), 2) AS SCORE
FROM REST_INFO I JOIN REST_REVIEW R ON I.REST_ID = R.REST_ID
ORDER BY SCORE DESC, I.FAVORITES DESC
REST_ID | REST_NAME | FOOD_TYPE | FAVORITES | ADDRESS | SCORE |
00001 | 은돼지식당 | 한식 | 734 | 서울특별시 중구 다산로 149 | 4.47 |
=>오류
오류 원인
1. 조건 중 '서울에 위치한 식당'을 놓침 --> 조건을 분해하여 살펴보는 훈련 필요
2. GROUP BY를 사용하여 식당 별로 그룹화하지 않은 것
'◖코딩 테스트◗▬▬▬▬▬▬▬▬▬ > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 깃허브 자동 커밋 연동(2024) (4) | 2024.01.23 |
---|---|
[SQL KIT] (2024) 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기(설명/코드/정답) (0) | 2024.01.22 |
[SQL KIT] (2024) 즐겨찾기가 가장 많은 식당 정보 출력하기(설명/코드/정답) (0) | 2024.01.21 |
[SQL KIT] (2024) 오프라인/온라인 판매 데이터 통합하기(설명/코드/정답) (0) | 2024.01.18 |
[SQL KIT] (2024) 재구매가 일어난 상품과 회원 리스트 구하기 (0) | 2024.01.17 |