1. 집계 함수
- 기본 연산
- 합계 : SUM(컬럼)
- 평균 : AVG(컬럼)
select sum(food_preparation_time) total_food_preparation_time, # 상품 준비 시간 합계
avg(delivery_time) avg_food_delivery_time # 배달 시간 평균
from food_orders
- 데이터 개수
- 전체 데이터 개수 : COUNT(컬럼) or COUNT(1)
- 몇 개의 값을 가지고 있는지 구할 때(중복 x) : DISTINCT
select count(1) count_of_orders, # 전체 주문 건수
count(distinct customer_id) count_of_customers # 주문한 고객 수
from food_orders
- 데이터 범위
- 최솟값 : MIN(컬럼)
- 최댓값 : MAX(컬럼)
select min(price) min_price, # 주문 가격의 최소값
max(price) max_price # 주문 가격의 최댓값
from food_orders
2. 범주별로 그룹화하기
- GROUP BY: 특정 컬럼을 기준으로 데이터를 그룹화하여 요약 정보(합계, 평균, 개수 등)를 도출
- WHERE 다음, ORDER BY 앞에 위치
- 여러 컬럼을 GROUP BY 에 넣으면 지정한 모든 컬럼의 조합을 기준으로 그룹화됨
# 지불방식 & 부가가치세(0.2이상)별 가장 최근 결제일 조회
select pay_type, vat, # 카테고리 컬럼
max(date) # 집계 함수
from payments
where vat >= 0.2
group by pay_type, vat # 지불방식과 부가가치세 조합으로 그룹화
3. 그룹 단위로 조건 걸기
- HAVING: GROUP BY로 묶인 그룹에 대해 조건을 걸 때 사용
- COUNT(), SUM() 같은 집계 함수 결과를 필터링 ( ↔️ WHERE절은 집계 함수 사용할 수 없음 )
- GROUP BY 다음 위치
4. 정렬하기
- ORDER BY: 하나 이상의 컬럼 또는 계산 결과를 기준으로 정렬
- ASC: 오름차순 정렬 (기본값) / DESC: 내림차순 정렬
- SELECT 문 마지막에 위치
- 여러 컬럼을 GROUP BY 에 넣으면 지정한 컬럼들이 순차적으로 정렬됨
# 음식점별 주문 금액 최댓값 조회하기
select restaurant_name,
max(price) "최대 주문금액"
from food_orders
group by restaurant_name
order by max(price) desc # 최댓값 기준으로 내림차순 정렬
📌 SQL 기본 구조
순서 기억하기!
#코드 순서 #실행 순서
select #5: 출력할 열 계산
from #1: 테이블 선택
where #2: 개별 행 필터링
group by #3: 남은 행을 그룹화
having #4: 그룹 단위로 조건 적용
order by #6: 결과 정렬
📝 숙제
음식 종류별 가장 높은 주문 금액과 가장 낮은 주문금액을 조회하고, 가장 낮은 주문금액 순으로 (내림차순) 정렬하기
select cuisine_type,
max(price) max_price,
min(price) min_price
from food_orders
group by cuisine_type
order by min(price) desc
'강의 > 프로그래밍 기초' 카테고리의 다른 글
[ 프로그래밍 기초 ] SQL | 데이터 조회 및 필터링 (0) | 2025.06.17 |
---|---|
[프로그래밍 기초] Python | 유용한 문법들 (0) | 2025.05.27 |
[프로그래밍 기초] Python | 함수 (0) | 2025.05.23 |
[프로그래밍 기초] Python | 조건문, 반복문 (1) | 2025.05.22 |
[프로그래밍 기초] Python | 리스트, 튜플, 딕셔너리 (0) | 2025.05.21 |