✏️ 문제
✏️ 정답
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 한다.
-- 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)
🙂 공부하면서 적는 글입니다. 공감과 피드백 환영합니다.