엑셀보다 쉽고 빠른 SQL

엑셀보다 쉽고 빠른 SQL 2주차

김호진02 2024. 10. 14. 16:10

 

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(항목) : 항목 전체의 평균

sum() 과 avg() 함수 사용 결과

 

select count(1) count_of_orders,

count(distinct customer_id) count_of_customers

from food_orders

count(항목) : 항목의 전체 갯수

count(숫자) : 테이블 항목중 숫자번째에 해당하는 항목의 전체 갯수

count(distinct 항목) : 중복된 값을 제외 한 항목의 전체 갯수

count() 함수 사용 결과

 

select min(price) min_price,

max(price) max_price

from food_orders

min(항목) : 항목의 값들 중 최솟값

max(항목) : 항목의 값들 중 최댓값

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;

 

실습 1 결과

 

2) [실습] 한국 음식의 주문 당 평균 음식가격 구하기

 - 조건 1. 한국 음식 (cuisine_type='Korean')

 - 조건 2. 주문 당 평균 음식 가격(avg)

SELECT avg(price)

FROM food_orders

WHERE cuisine_type='Korean';

 

실습 2 결과

 


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;

 

실슬 1 실행 결과

 

실습 2. 고객을 이름 순으로 오름차순으로 정렬하기

SELECT *

FROM customers

ORDEr BY name ASC;

실습 2 실행 결과

 

 


5. SQL 구조 마스터 - WHERE, GROUP BY, ORDER BY

[퀴즈] 쿼리문 주고 맞춰서 바꿔보기

1. 

  1. order by sum(delivery_time) desc
  2. group by cuisine_type
  3. where day_of_the_week=’Weekend’
  4. from food_orders
  5. select cuisine_type, sum(delivery_time) total_delivery_time

정답 ( 5-4-3-2-1)

 

2. 

  1. where age between 20 and 40
  2. select age, count(name) count_of_name
  3. order by age
  4. group by age
  5. 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주차 강의에서 다양한 조회 문법과 함수를 배웠다. 원래 알던 내용이었지만 까먹었기도하고 다시 들으니 뇌속어딘가에서 스멀스멀 기억이 기어나오는 듯 했다. 자주 복습해서 까먹지 않도록하고 많은 문제를 더 풀어봐야겠다!