강원도에 위치한 생산공장 목록 출력하기 & 서울에 위치한 식당 목록 출력하기 (프로그래머스)

는는·2023년 1월 6일
0

SQL - 문제 풀이

목록 보기
5/77

강원도에 위치한 생산공장 목록 출력하기

https://school.programmers.co.kr/learn/courses/30/lessons/131112

WHERE절에서 주소가 강원도인 생산공장을 불러옵니다.

WHERE address LIKE '강원도%'

이제 지정된 컬럼만, 식품공장의 공장 id 기준으로 오름차순 정렬만 해주면 정답입니다.

SELECT factory_id, factory_name, address
ORDER BY factory_id

정답

SELECT factory_id, factory_name, address
FROM food_factory
WHERE address LIKE '강원도%'
ORDER BY factory_id

서울에 위치한 식당 목록 출력하기 (LV.4)

https://school.programmers.co.kr/learn/courses/30/lessons/131118

두 테이블을 합쳐주고 리뷰 평균점수를 구하고 서울에 있는 식당을 구해주는 문제입니다.

rest_review 테이블과 rest_info 테이블을 합쳐 줘야하는데요! 공통적으로 rest_id를 가지고 있는 것을 볼 수 있습니다.

rest_id기준으로 두 테이블을 합쳐줍니다. 테이블 이름이 길기 때문에 AS를 통해 이름을 A. B로 변경해주였습니다.

FROM rest_info AS A JOIN rest_review AS B
ON A.rest_id = B.rest_id 

rest_info테이블에 있는 주소를 LIKE를 통해 가져옵니다.

서울특별시, 서울시 두 가지의 주소 형식으로 있는 걸 보고 '서울' 만 지정해 가져왔습니다.

A.address LIKE '서울%'

rest_review 테이블에 있는 review_score를 가져와 AVG로 평균을 구해 줍니다.

그 후에 ROUND로 소수점 3자리 까지 가져오고, 이름을 score로 지정해줍니다.

ROUND(AVG(B.review_score),2) AS score

이제 평균점수 기준으로 내림차순, 즐겨찾기 수 기준으로 내림차순 정렬을 해주고, 지정된 컬럼만 가져오면 정답을 구할 수 있습니다. 정렬해주기 전에 GROUP BY로 rest_id를 기준으로 나눠줍니다.

GROUP BY A.rest_id
ORDER BY score DESC , favorites DESC

지정해준 컬럼인 식당 id, 식당 이름, 음식 종류, 즐겨찾기 수, 주소, 리뷰 평균점수를 가져오고 위에서 구한 답을 합쳐주면 정답 값이 나옵니다.

SELECT A.rest_id,rest_name,food_type,favorites,address,
ROUND(AVG(B.review_score),2) AS score
FROM rest_info AS A JOIN rest_review AS B
ON A.rest_id = B.rest_id 
WHERE A.address LIKE '서울%'
GROUP BY A.rest_id
ORDER BY score DESC , favorites DESC

0개의 댓글