[프로그래머스]level4-서울에 위치한 식당 목록 출력하기-MySQL

s2ul3·2022년 11월 4일
0
post-custom-banner

문제링크

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

문제설명

  • 문제

REST_INFO와 REST_REVIEW 테이블에서 서울에 위치한 식당들의 식당 ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수를 조회하는 SQL문을 작성해주세요.
이때 리뷰 평균점수는 소수점 세 번째 자리에서 반올림 해주시고 결과는 평균점수를 기준으로 내림차순 정렬해주시고, 평균점수가 같다면 즐겨찾기수를 기준으로 내림차순 정렬해주세요.

알고리즘

  • LIKE를 이용한 검색

    • 부분적으로 일치하는 데이터를 검색
    • 문자열을 이용하는 조건에만 LIKE 키워드 사용 가능
    • LIKE 키워드와 함께 사용할 수 있는 기호
      • '%' : 0개 이상의 문자
        • EX) LIKE '데이터%' : 데이터로 시작하는 문자열
      • '_' : 1개 이상의 문자
        • EX) LIKE '데이터_ _ _' : 데이터로 시작하는 6자 길이의 문자열
  • 집계함수(AGGREGATE FUNCTION)

    • null 속성 값은 제외하고 계산
    • WHERE절에 사용 불가, SELECT절이나 HAVING절에서만 사용가능
    • COUNT, MAX, MIN, SUM, AVG
  • 그룹별 검색 (GROUP BY)

    • HAVING 키워드를 함께 이용하여 그룹에 대한 조건을 작성
    • ex) 주문 테이블에서 주문제품별 수량의 합계 검색
      SELECT 주문제품, SUM(수량) AS 총주문수량
      FROM 주문
      GROUP BY 주문제품
  • SELECT 속성명 AS 별칭 : 속성명 대신 별칭으로 출력됨.

  • ROUND(숫자, m) : 숫자를 소숫점 m째 자리까지 반올림
    ex) ROUND(5.36, 1) --> 5.4

  • 동등 조인

    • 두 속성 간의 같은 갓을 가진 집합
    • WHERE절에 조인조건 명시
  • 외부 조인 (outer-join)

    • 자연 조인 연산에서 제외되는 투플도 결과 릴레이션에 포함
    • 모든 속성을 보여주는 기준 릴레이션 위치에 따라 왼쪽 외부조인, 오른쪽 외부조인, 양쪽 외부조인으로 나뉨.
    • FROM 절에 조인 종류를 적고 ON을 이용하여 조인조건 명시
    SELECT ~~~ 
    FROM Customer LEFT OUTER JOIN Orders ON Customer.custid = Orders.custid

코드

# 동등 조인 사용
SELECT REST_INFO.REST_ID, REST_INFO.REST_NAME, REST_INFO.FOOD_TYPE, REST_INFO.FAVORITES, REST_INFO.ADDRESS, ROUND(AVG(REST_REVIEW.REVIEW_SCORE), 2) AS SCORE
FROM REST_INFO, REST_REVIEW
WHERE REST_INFO.REST_ID = REST_REVIEW.REST_ID AND REST_INFO.ADDRESS LIKE '서울%'
GROUP BY REST_INFO.REST_ID
ORDER BY SCORE DESC, FAVORITES DESC
profile
statistics & computer science
post-custom-banner

0개의 댓글