엑셀보다 쉽고 빠른 SQL 2주차
1. SQL로 한번에 계산하기
2. WHERE 절로 원하는 데이터를 뽑고, 계산하기(실습)
3. GROUP BY로 범주별 연산
4. ORDER BY 정렬하기
5. SQL 구조 마스터 - WHERE, GROUP BY, ORDER BY
6. 2주차 숙제 및 후기
1. SQL로 한번에 계산하기
- 숫자 연산 하기
select food_preparation_time,
delivery_time,
*** food_preparation_time + delivery_time as total_time ***
from food_orders;
food_preparation_time+ delivery_time

- 함수를 이용하여 연산하기
select sum(food_preparation_time) total_food_preparation_time,
avg(delivery_time) avg_delivery_time
from food_orders
sum(항목) : 항목 전체 값의 합
avg(항목) : 항목 전체의 평균

select count(1) count_of_orders,
count(distinct customer_id) count_of_customers
from food_orders
count(항목) : 항목의 전체 갯수
count(숫자) : 테이블 항목중 숫자번째에 해당하는 항목의 전체 갯수
count(distinct 항목) : 중복된 값을 제외 한 항목의 전체 갯수

select min(price) min_price,
max(price) max_price
from food_orders
min(항목) : 항목의 값들 중 최솟값
max(항목) : 항목의 값들 중 최댓값

2. WHERE 절로 원하는 데이터를 뽑고, 계산하기
1) [실습] 주문 금액이 30,000원 이상인 주문건의 갯수 구하기
- food_orders 테이블
- 주문 금액 price 컬럼
- 조건 1. 주문금액 30,000원 이상 (주문금액 >= 30000)
- 조건 2. 조건 1 에 갯수(count)
SELECT count(price)
FROM food_orders
WHERE price >= 30000;

2) [실습] 한국 음식의 주문 당 평균 음식가격 구하기
- 조건 1. 한국 음식 (cuisine_type='Korean')
- 조건 2. 주문 당 평균 음식 가격(avg)
SELECT avg(price)
FROM food_orders
WHERE cuisine_type='Korean';

3. GROUP BY로 범주별 연산
select cuisine_type,
sum(price) sum_of_price
from food_orders
group by cuisine_type

-- cuisine_type 별 가격의 합
실습 1. 음식점별 주문 금액 최댓값 조회하기
- 음식점별(group by) 주문금액 최댓값(max(price))
SELECT restaurant_name ,
max(price) max_price
FROM food_orders
GROUP BY restaurant_name;

실습 2. 결제 타입별 가장 최근 결제일 조회하기
- 결제 타입별 (group by) 가장 최근결제일( max(date) )
SELECT pay_type, max(date) recent_date
FROM payments
GROUP BY pay_type;

----------------- 10/14일--------------------
4. ORDER BY 정렬하기
select 컬럼명
from food_orders
order by
컬럼명 (DESC 내림차순, 생략 또는 ASC 오름차순)
select cuisine_type,
sum(price) sum_of_price
from food_orders
group by cuisine_type
order by sum(price)

실습 1. 음식점별 주문 금액 최댓값 조회하기 - 최댓값 기준으로 내림차순 정렬
- 음식점별 (GROUP BY) ,주문 금액 최댓값(MAX()함수), 내림차순(ORDER BY)
SELECT restaurant_name, sum(price) sum_of_price
FROM food_orders
GROUP BY cuisine_type
ORDER BY sum_of_price DESC;

실습 2. 고객을 이름 순으로 오름차순으로 정렬하기
SELECT *
FROM customers
ORDEr BY name ASC;

5. SQL 구조 마스터 - WHERE, GROUP BY, ORDER BY
[퀴즈] 쿼리문 주고 맞춰서 바꿔보기
1.
- order by sum(delivery_time) desc
- group by cuisine_type
- where day_of_the_week=’Weekend’
- from food_orders
- select cuisine_type, sum(delivery_time) total_delivery_time
정답 ( 5-4-3-2-1)
2.
- where age between 20 and 40
- select age, count(name) count_of_name
- order by age
- group by age
- from customers
정답 ( 2-5-1-4-3)
6. 2주차 숙제 및 후기
문제) 음식 종류별 가장 높은 주문 금액과 가장 낮은 주문금액을 조회하고, 가장 낮은 주문금액 순으로 (내림차순) 정렬하기
- 음식 종류별(GROUP BY)
- 조회 항목 : 가장 높은 주문 금액(MAX() 함수) , 가장 낮은 주문금액(MIN() 함수)
- 가장 낮은 주문 금액 순으로 내림차순(ORDER BY MIN() DESC)
SELECT cuisine_type, restaurant_name , MAX(price) max_price,MIN(price) min_price
FROM food_orders
GROUP BY cuisine_type
ORDER BY min_price DESC;

후기 : 2주차 강의에서 다양한 조회 문법과 함수를 배웠다. 원래 알던 내용이었지만 까먹었기도하고 다시 들으니 뇌속어딘가에서 스멀스멀 기억이 기어나오는 듯 했다. 자주 복습해서 까먹지 않도록하고 많은 문제를 더 풀어봐야겠다!