본문 바로가기
프로그래밍/SQL

[SQL 고득점 Kit - SELECT] 서울에 위치한 식당 목록 출력하기 / 소수점 자리수 지정하는 다양한 방법 / INNER JOIN, AVG, GROUP BY LIKE

by hi-rachel 2023. 1. 10.

✏️ 문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

✏️ 정답

SELECT INFO.REST_ID, INFO.REST_NAME, INFO.FOOD_TYPE, INFO.FAVORITES, INFO.ADDRESS, ROUND(AVG(REVIEW.REVIEW_SCORE), 2) AS SCORE
FROM REST_INFO AS INFO
INNER JOIN REST_REVIEW AS REVIEW ON INFO.REST_ID = REVIEW.REST_ID
WHERE INFO.ADDRESS LIKE '서울%'
GROUP BY INFO.REST_ID
ORDER BY SCORE DESC, INFO.FAVORITES DESC;

 

📌 [INNER JOIN]

INNER JOIN 키워드는 두 테이블에서 교집합인(일치하는) 값이 있는 record를 SELECT 한다.

출처 : https://www.w3schools.com/sql/sql_join_inner.asp

 

-- INNER JOIN Syntax
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;

 

📌 [AVG, GROUP BY]

SELECT 
    productline, 
    AVG(buyprice) 'Average Price'
FROM
    products
GROUP BY productline;

[참고] https://www.mysqltutorial.org/mysql-avg/

AVG() 함수종종 테이블의 각 행(ROW) 그룹에 대한 평균값을 계산하기 위해 GROUP BY절과 함께 사용된다.

위 예시에서, 각 제품군에 대한 제품의 평균 구매 가격을 계산하려면AVG() 함수와 함께 GROUP BY절을 사용합니다.

 

📌 [LIKE]

[참고] https://www.w3schools.com/mysql/mysql_like.asp

LIKE 연산자열(COLUMN)에서 특정 패턴을 찾기 위해 WHERE절에서 사용된다.

  •  LIKE 연산자의 2가지 wildcards
    • % : 0개, 1개, 또는 여러 문자를 나타낸다.
    • _ : 하나의 단일 문자를 나타낸다.
-- LIKE Syntax
SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE pattern;

 

📌 [소수점 올림/내림/반올림/자르기, 소수점 자릿수 지정하기]

-- ROUND Syntax
ROUND(number, decimals)

-- decimals(선택), 지정하지 않으면 정수 반환
  • ROUND() : 숫자를 지정된 소수 자릿수(decimals)로 반올림한다.

FLOOR(), CEIL()CEILING(), TRUNCATE() 함수들도 있다.

  • TRUNCATE() : 숫자를 지정된 소수 자릿수로 자른다.
TRUNCATE(number, decimals)
  • FLOOR() : 숫자보다 작거나 같은 가장 큰 정수 값을 반환한다. (정수면 그대로 반환, 소수점 있으면 무조건 내려서 반환)
FLOOR(number)
  • CEIL() = CEILING() : 숫자보다 크거나 같은 가장 작은 정수 값을 반환한다. (정수면 그대로 반환, 소수점 있으면 무조건 올려서 반환)
CEIL(number)
CEILING(number)
  • FORMAT() : 숫자를 "#,###,###.##"과 같은 형식으로 지정(format)하고 지정된 소수 자릿수로 반올림한 다음 결과를 문자열로 반환한다.

=> 값을 반올림하므로 위 문제에서 ROUND() 대신 사용해도 된다.

FORMAT(number, decimal_places)

 

 

🙂 공부하면서 적는 글입니다. 공감과 피드백 환영합니다.