SQL 부트캠프 (2) 기본구조

Chihuahua·2023년 12월 19일
0

[수업 목표]

  • SQL을 이용하여 숫자 계산 값을 도출한다
  • Query 결과를 원하는 순서대로 조회한다

(0) 개요

  • 1) SQL 기본 구조 복습 및 데이터 조회 조건과 매칭해보기
    • SQL 문의 기본 구조
      select
      from
      where
      group by
      order by
    • 조회 조건과 매칭해보기
      - 주문 테이블에서 → from
      - 주문 수량이 1건인 주문건의 → where
      - 음식 가격의 평균을 음식 종류별로 조회하여 → avg, group by
      - 음식 가격이 높은 순서대로 정렬하기 → order by

(1) SELECT에서 데이터 조회와 엑셀 함수 적용을 한 번에 끝내기

구분설명
SUM합계
AVG평균
COUNT데이터 갯수
DISTINCT몇개의 값을 가지고 있는지 구할 때
MIN최솟값
MAX최댓값
  • 데이터 갯수 : 주문 테이블의 전체 주문은 몇건인가요?
  • 몇개의 값을 가지고 있는지 구할 때 : 주문을 한 고객은 몇명인가요?

사용 예시 (주문건수와, 주문 한 고객 수 구하기)

select count(1) count_of_orders,
count(distinct customer_id) count_of_customers
from food_orders

⬆️ COUNT에서는 * 컬럼명 대신 1 사용 가능

사용 예시 (상품 준비시간의 합계와 평균 구하기)

select sum(food_preparation_time) total_food_preparation_time,
avg(delivery_time) avg_food_preparation_time
from food_orders

사용 예시 (주문 가격의 최솟값, 최댓값 구하기)

select min(price) min_price,
max(price) max_price
from food_orders


(2) Group by의 활용

예를들어 아래 구문을 활용한다고 해보자

select restaurant_name,
max(price) "최대 주문금액"
from food_orders

최대 주문 금액 1건만 나오게 된다. 그런데 group by를 구하면 전체 컬럼을 불러올 수 있다.

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

(3) order by의 활용

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

내림차순(큰 수 부터)을 사용하기 위해서는 order by의 구문 맨 끝에 desc를 붙인다.
미작성시 자동으로 오름차순(작은 수 부터)이 적용된다.

(4) 기본 구조 정리

select
from
where
group by
order by

위 순서대로 쿼리를 작성한다.

(5) 예제 실습

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

select cuisine_type "음식종류"
max(price) "높은 주문 금액"
min(price) "낮은 주문 금액"
from food_orders
group by cuisine type
order by min(price) desc

(6) 후기

group by의 개념을 이해해서 기쁘다. 컬럼 전체를 묶어서 셀렉트 조건에 맞게 불러올 수 있는 점 !!
order by로 원하는 정렬을 할 수 있음을 알게 되었다.
엑셀의 필터기능을 제대로 sql화 할 수 있게 되었음

profile
더 나은 세상을 향하는 길에 한 스푼 관심을 보태고 삽니다.

0개의 댓글