부트캠프

공부 내용 정리 SQL (2주차)

ohs020105 2024. 10. 22. 19:10

1주차 복습 내용 한번더 보자.

  • SQL 문의 기본 구조

select # '데이터 조회' 의 명령어로 필수 구문
from   # '어디에서 데이터를 조회할까' 의 명령어로 필수 구문 
where  # 조건을 지정해주는 구문

  • 조건을 지정하는 방법
    • 비교연산자 : <, >, =, <>
    • 다양한 구문 : IN, BETWEEN, LIKE
    • 여러가지 조건의 적용 : AND, OR, NOT

2주차

01. 엑셀 대신 SQL로 한번에 계산하기 (SUM, AVERAGE, COUNT, MIN, MAX)

엑셀 에서도 숫자 연산 하듯이 sql에서도 숫자 연산이 가능하다.

ex)

select food_preparation_time,
       delivery_time,
       food_preparation_time + delivery_time as total_time
from food_orders

이렇게 풀이가 가능하다.

숫자 연산 종류
연산자 설명
+ 더하기
- 빼기
* 곱하기
/ 나누기
 

이렇게 해도 괜찮지만 함수도 있다.

  • 합계 : SUM(컬럼)
  • 평균 : AVG(컬럼)
  • ex)
select sum(food_preparation_time) total_food_preparation_time,
       avg(delivery_time) avg_food_preparation_time
from food_orders

이렇게 나온다.

3) 전체 데이터의 갯수 구하기

  • 데이터 갯수 : COUNT(컬럼) * 컬럼명 대신 1 혹은 * 사용 가능
  • 몇개의 값을 가지고 있는지 구할 때 : DISTINCT
select count(1) count_of_orders,
       count(distinct customer_id) count_of_customers
from food_orders

이렇게 된다.

4) 데이터의 범위, 최솟값과 최댓값 구하기

  • 함수 종류
    • 최솟값 : MIN(컬럼)
    • 최댓값 : MAX(컬럼)
select min(price) min_price,
       max(price) max_price
from food_orders


[실습]

1) [실습] 주문 금액이 30,000원 이상인 주문건의 갯수 구하기

SELECT COUNT(quantity) "총 주문 건수"
FROM food_orders 
WHERE price>=30000

이렇게 나오게 된다.

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

SELECT AVG(price) "avg_price" 
FROM food_orders
WHERE cuisine_type='korean'

이렇게 나온다.


 GROUP BY로 범주별 연산 한 번에 끝내기

난 이게 제일 이해가 안된것 같았다. 

 

  • Group by 기본 구조
    • Group by 는 카테고리 컬럼 지정, 그리고 Group by 를 적어주는 것으로 적용 가능.
select cuisine_type,
       sum(price) sum_of_price
from food_orders
group by cuisine_type

ㅇ
이렇게 나오게 된다.


[실습]

1.음식점별 주문 금액 최댓값 조회하기

SELECT restaurant_name ,
	   max(price) "최대 주문금액"
from food_orders 
group by 1

이런식으로 나온다.

2.결제 타입별 가장 최근 결제일 조회하기

SELECT pay_type "결제타입",
	   max(date) "최근 결제일"
from payments 
group by 1

이렇게 나온다.


Query 결과를 정렬하여 업무에 바로 사용하기 (ORDER BY)

  • 오름차순 : 숫자가 점점 커지는 순서로 정렬
  • 내림차순 : 숫자가 점점 작아지는 순서로 정렬

2) 정렬문 Order by 의 기본구조

Order by 는 카테고리 컬럼 지정, 그리고 Order by 를 적어주는 것으로 적용 가능하다.

ex)

select 카테고리컬럼(원하는컬럼 아무거나),
       sum(계산 컬럼),
from
group by 카테고리컬럼(원하는컬럼 아무거나)
order by 정렬을 원하는 컬럼 (카테고리컬럼(원하는컬럼 아무거나), sum(계산 컬럼) 둘 다 가능)

실전응용)

select cuisine_type,
       sum(price) sum_of_price
from food_orders
group by cuisine_type
order by sum(price)

종류 구문 예시
오름차순 생략 order by sum(price)
내림차순 desc order by sum(price) desc

[실습]

1.음식점별 주문 금액 최댓값 조회하기 - 최댓값 기준으로 내림차순 정렬

SELECT restaurant_name "식당이름",
	   max(price) "최대주문금액"
FROM food_orders 
group by 1
order by max(price) DESC

이렇게 나온다.

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

SELECT *
from customers 
order by name

이렇게 나온다.


다시 한번 더 SQL 구조를 봐보자.

select
from
where
group by
order by

잘 기억하고 있자.


[실습]

음식 종류별 가장 높은 주문 금액과 가장 낮은 주문금액을 조회하고, 가장 낮은 주문금액 순으로 (내림차순) 정렬하기

SELECT  cuisine_type ,
		MIN(price) "최저가격",
		MAX(price) "최고가격" 
FROM food_orders 
group by 1
order by min(price) desc

이렇게 된다.

이렇게 2주차를 마무리 하겠다.