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;