2주차의 목표
1. SQL을 이용하여 숫자 계산 값을 도출한다
2. Query 결과를 원하는 순서대로 조회한다
SUM, AVERAGE, COUNT, MIN, MAX
숫자 연산 종류
| + | 더하기 |
| - | 빼기 |
| * | 곱하기 |
| / | 나누기 |
합계와 평균 구하기
합계 : SUM(컬럼)
평균 : AVG(컬럼)
select sum(food_preparation_time) total_food_preparation_time,
avg(delivery_time) avg_food_delivery_time
from food_orders
전체 데이터의 개수 구하기
데이터 개수 : COUNT(컬럼) * 컬럼명 대신 1 혹은 * 사용 가능
몇개의 값을 가지고 있는지 구할 때 : 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
WHERE 절로 원하는 데이터를 뽑고, 계산해보기
EX) 주문 금액이 30,000원 이상인 주문건의 갯수 구하기
select count(order_id) count_of_orders
from food_orders
where price>=30000
EX) 한국 음식의 주문 당 평균 음식가격 구하기
select avg(price) as average_price
from food_orders
where cuisine_type='Korean'
GROUP BY로 범주별 연산 한 번에 끝내기
기본 구조
select 카테고리컬럼(원하는컬럼 아무거나),
sum(계산 컬럼),
from
group by 카테고리컬럼(원하는컬럼 아무거나)
EX) 음식 종류별 주문 금액 합계
select cuisine_type,
sum(price) sum_of_price
from food_orders
group by cuisine_type
EX) Group by 를 이용하여 카테고리별 연산해보기
select restaurant_name,
max(price) "최대 주문금액"
from food_orders
group by restaurant_name
EX) 결제 타입별 가장 최근 결제일 조회하기
select pay_type "결제타입",
max(date) "최근 결제일"
from payments
group by pay_type
ORDER BY
기본 구조
select 카테고리컬럼(원하는컬럼 아무거나),
sum(계산 컬럼),
from
group by 카테고리컬럼(원하는컬럼 아무거나)
order by 정렬을 원하는 컬럼 (카테고리컬럼(원하는컬럼 아무거나), sum(계산 컬럼) 둘 다 가능)
오름차순 : 생략
내림차순 : desc
EX) 음식점별 주문 금액 최댓값 조회하기 - 최댓값 기준으로 내림차순 정렬
select restaurant_name,
max(price) "최대 주문금액"
from food_orders
group by restaurant_name
order by max(price) desc
WHERE, GROUP BY, ORDER BY 로 완성되는 SQL 구조
기본 구조
select
from
where
group by
order by
숙제
음식 종류별 가장 높은 주문 금액과 가장 낮은 주문금액을 조회하고, 가장 낮은 주문금액 순으로 (내림차순) 정렬하기
select cuisine_type,
min(price) min_price,
max(price) max_price
from food_orders
group by cuisine_type
order by min(price) desc