
LOL 유저 테이블에서 지역(region)별 평균 레이팅(rating)을 계산하는 SQL 쿼리를 작성해 봅시다.
SELECT AVG(rating ORDER BY region) AS 'average by region'
FROM lol_users;
AVG() 함수는 ORDER BY와 함께 사용할 수 없습니다. AVG(rating)은 평균을 계산하는 집계 함수(Aggregate Function)이므로, 정렬 기준을 직접 넣을 수 없습니다.GROUP BY가 필요합니다. AVG()는 그룹 단위로 평균을 계산할 때 GROUP BY와 함께 사용해야 합니다.SELECT region, AVG(rating) AS 'average_rating'
FROM lol_users
GROUP BY region;
| region | average_rating |
|---|---|
| 한국 | 1350 |
| 미국 | 1425 |
계산 과정:
GROUP BY와 AVG()의 원리FROM lol_users → 테이블에서 데이터를 가져옴GROUP BY region → region을 기준으로 데이터를 그룹화AVG(rating) → 각 그룹 내에서 평균을 계산SELECT로 결과 출력| 함수명 | 설명 |
|---|---|
AVG() | 평균값 계산 |
SUM() | 합계 계산 |
COUNT() | 개수 세기 |
MAX() | 최대값 찾기 |
MIN() | 최소값 찾기 |
SELECT region, ROUND(AVG(rating), 2) AS 'average_rating'
FROM lol_users
GROUP BY region;
📌 ROUND(AVG(rating), 2): 평균값을 소수점 2자리까지 반올림하여 출력합니다.
SELECT SUBSTR(email, 10) AS 'email_domain',
AVG(age) AS 'average_of_age',
COUNT(1) AS 'number_of_customers'
FROM customers
GROUP BY 1;
GROUP BY 1은 SELECT 문의 첫 번째 열(이 경우 SUBSTR(email, 10))을 기준으로 그룹화하라는 의미입니다.
처음에는 1 = * = 전체라고 생각해서 의아했어요.