study/SQL
[SQL 2] 데이터를 그룹화하고 정렬하기 (SUM, COUNT, ORDER BY)
TheMimk
2024. 12. 17. 17:00
목차
0. SQL 복습
1. SQL로 계산하기
2. 범주별 계산: GROUP BY
3. 결과 정렬: ORDER BY
4. SQL의 완성된 구조
5. 실습
0. SQL 복습
- SQL 기본 구조
spl
SELECT 컬럼명
FROM 테이블명
WHERE 조건
GROUP BY 그룹 컬럼
ORDER BY 정렬 기준;
- 기본 연산자: +, -, *, /
- 조건식: WHERE 절에 =, <>, <, >, BETWEEN, IN, LIKE 사용.
1. SQL로 계산하기
1. 숫자 연산
SQL에서는 컬럼 간의 기본 사칙연산을 사용 가능
spl
SELECT food_preparation_time,
delivery_time,
food_preparation_time + delivery_time AS total_time
FROM food_orders;
2. 합계와 평균 구하기
- 합계: SUM(컬럼명)
- 평균: AVG(컬럼명)
spl
SELECT SUM(price) AS total_price,
AVG(price) AS average_price
FROM food_orders;
3. 데이터 개수 구하기
- 전체 개수: COUNT(*) 또는 COUNT(1)
- 중복 제거 후 개수: COUNT(DISTINCT 컬럼명)
spl
SELECT COUNT(1) AS total_orders,
COUNT(DISTINCT customer_id) AS unique_customers
FROM food_orders;
4. 최솟값과 최댓값 구하기
- 최솟값: MIN(컬럼명)
- 최댓값: MAX(컬럼명)
spl
SELECT MIN(price) AS min_price,
MAX(price) AS max_price
FROM food_orders;
2. 범주별 계산: GROUP BY
- GROUP BY를 사용하면 특정 컬럼을 기준으로 그룹화한 후 연산을 수행할 수 있다.
spl
SELECT cuisine_type,
SUM(price) AS total_price
FROM food_orders
GROUP BY cuisine_type;
3. 결과 정렬: ORDER BY
- ORDER BY를 사용해 조회된 데이터를 원하는 순서로 정렬한다.
- 오름차순: 기본값 (ASC 생략 가능)
- 내림차순: DESC
spl
SELECT restaurant_name,
MAX(price) AS max_price
FROM food_orders
GROUP BY restaurant_name
ORDER BY max(price) DESC;
4.SQL의 완성된 구조
SQL의 전체 구조
spl
SELECT 컬럼명
FROM 테이블명
WHERE 조건
GROUP BY 그룹 컬럼
ORDER BY 정렬 기준;
5. 실습
1. 주문 금액이 30,000원 이상인 주문 건수 조회
spl
SELECT COUNT(order_id) AS order_count
FROM food_orders
WHERE price >= 30000;
2. 음식 종류별 주문 금액의 합계와 최솟값, 최댓값 조회 (정렬 포함)
spl
SELECT cuisine_type,
MIN(price) AS min_price,
MAX(price) AS max_price
FROM food_orders
GROUP BY cuisine_type
ORDER BY min(price) DESC;