SELECT 문법 (2): Aggregate 함수, AS, GROUP BY, ORDER BY

하하호호훈이·2025년 5월 12일

SQL(MySQL) MUST KNOW

목록 보기
8/23
post-thumbnail

1. SUM, AVG, MAX, MIN

데이터베이스에서 데이터의 합계, 평균, 최대값, 최소값을 계산할 때 사용하는 대표적인 aggregate(집계) 함수들입니다.

데이터를 분석할 때 가장 기본이 되는 함수들이죠!

SUM() : 숫자 값의 합계를 계산합니다.
AVG() : 숫자 값의 평균을 계산합니다.
MAX() : 최대값을 찾습니다.
MIN() : 최소값을 찾습니다.

예시

테이블 정보: sales

ColumnTypeDescription
sale_idINT판매 ID (PRIMARY KEY)
product_nameVARCHAR상품명
amountDECIMAL판매 금액
sale_dateDATE판매일자

데이터 예시:

sale_idproduct_nameamountsale_date
1Laptop10002025-05-01
2Mouse502025-05-02
3Laptop12002025-05-02
4Keyboard2002025-05-03
5Monitor5002025-05-04
6Laptop8002025-05-05
7Mouse1002025-05-05
8Keyboard3002025-05-06

1) "지금까지 총 매출, 평균 상품 가격, 가장 비싼 상품의 가격, 가장 싼 상품의 가격은?"

SELECT SUM(amount), AVG(amount), MAX(amount), MIN(amount)
FROM sales

결과

SUM(amount)AVG(amount)MAX(amount)MIN(amount)
4150518.75120050

2. AS

AS컬럼명이나 별칭(Alias) 을 지정할 때 사용합니다. 이렇게 하면 쿼리 결과의 가독성이 높아지고, 표현이 더 명확해집니다.

SELECT 컬럼명 AS 별칭 : 컬럼명에 별칭을 지정합니다 ("띄어쓰기 가능 별칭" 혹은 변수명처럼 가능)!

예시

바로 위 예제를 그대로 적용하면

SELECT 
	SUM(amount) AS "Total Sales", 
    AVG(amount) AS avg_sales, 
    MAX(amount) AS max_price, 
    MIN(amount) AS min_price
FROM sales

결과

Total Salesavg_salesmax_pricemin_price
4150518.75120050

각 컬럼에 별칭이 생긴 것을 볼 수 있습니다!


3. GROUP BY

데이터베이스에서 데이터를 그룹별로 묶어 요약하고 싶을 때, 바로 이 GROUP BY가 등장합니다!

GROUP BY는 지정한 컬럼을 기준으로 데이터를 묶어, 그룹별로 aggregate(집계) 함수(SUM, AVG, MAX, MIN, COUNT)를 적용할 수 있게 합니다.

GROUP BY 컬럼명 : 해당 컬럼의 값이 같은 행끼리 묶어줍니다.

예시

위와 같은 테이블을 사용!

1) "각 상품별로 총 판매 금액을 알고 싶어요."

SELECT 
	product_name, SUM(amount) AS total_sales
FROM sales
GROUP BY product_name

결과 및 설명: GROUP BY product_name으로 같은 상품명끼리 묶고, SUM(amount)로 각 상품별 총 판매 금액을 계산하여 total_sales로 표시합니다~

product_nametotal_sales
Laptop3000
Mouse500
Keyboard1200
Monitor800

2) “각 상품별로 판매된 건수는 몇 건인가요?”

SELECT product_name, COUNT(*) AS sale_count
FROM sales

결과

product_namesale_count
Keyboard2
Laptop3
Monitor1
Mouse2

4. ORDER BY

데이터베이스에서 데이터를 정렬하고 싶을 때, 바로 이 ORDER BY가 등장합니다! ORDER BY는 지정한 컬럼을 기준으로 데이터를 오름차순(ASC) 또는 내림차순(DESC) 으로 정렬할 수 있습니다.

ORDER BY 컬럼명 ASC : 오름차순 (default)
ORDER BY 컬럼명 DESC : 내림차순

예시

이전과 같은 테이블을 사용!

1) “판매 금액을 오름차순으로 정렬하고 싶어요.”

SELECT sale_id, product_name, amount 
FROM sales 
ORDER BY amount ASC;

결과

sale_idproduct_nameamount
2Mouse50
7Mouse100
4Keyboard200
8Keyboard300
5Monitor500
6Laptop800
1Laptop1000
3Laptop1200

2) “상품명은 오름차순, 금액은 내림차순으로 정렬하고 싶어요.”

SELECT sale_id, product_name, amount 
FROM sales 
ORDER BY product_name ASC, amount DESC;

결과 및 설명
먼저 product_name이 오름차순으로 정렬된 후에 (Keyboard → Laptop → Monitor → Mouse) 동일한 상품명에서 amount가 내림차순으로 정렬됩니다.

sale_idproduct_nameamount
8Keyboard300
4Keyboard200
3Laptop1200
1Laptop1000
6Laptop800
5Monitor500
7Mouse100
2Mouse50

* 참고로 ORDER BY amount DESC, product_name ASC;로 하면 먼저 amount를 기준으로 내림차순으로 정렬을 한 후에, 동일한 가격에서 product_name으로 오름차순 정렬을 하기 때문에 결과가 아예 달라집니다. 주의하세요!



복합 연습!

테이블 정보: employees

ColumnTypeDescription
employee_idINT직원 ID (PRIMARY KEY)
nameVARCHAR직원 이름
departmentVARCHAR부서명
salaryDECIMAL월급
hire_dateDATE입사일자

Q) 각 부서별로 총 월급, 평균 월급, 최고 월급, 최저 월급을 계산하고,
그 결과를 총 월급 기준으로 내림차순으로 정렬해 주세요.
컬럼명은 Department, Total Salary, Average Salary, Highest Salary, Lowest Salary로 지정하세요.

SELECT
	department,
	SUM(salary) AS "Total Salary",
    AVG(salary) AS "Average Salary",
    MAX(salary) AS "Highest Salary",
    MIN(salary) AS "Lowwest Salary"
FROM employees
GROUP BY department
ORDER BY SUM(salary) DESC;

데이터 예시

employee_idnamedepartmentsalaryhire_date
1AliceSales30002023-01-10
2BobHR35002024-03-22
3CarolIT50002022-07-15
4DaveSales40002025-05-01
5EveHR25002025-01-15
6FrankIT70002023-11-30
7GraceMarketing32002024-06-05
8HelenMarketing28002025-04-20

쿼리 결과

departmentTotal SalaryAverage SalaryHighest SalaryLowest Salary
IT120006000.0070005000
Sales70003500.0040003000
HR60003000.0035002500
Marketing60003000.0032002800




이번 포스팅에서 데이터를 요약하고, 정렬하고, 원하는 대로 표현하는 것만으로도 SQL의 강력함을 알 수 있었습니다. 다음 포스팅에서는 더 어드벤스드 한 것들을 알아보아요! 그럼 👋

profile
AI, Data Science/Analysis 리뷰용가리지용 😆

0개의 댓글