SQL#2

codataffee·2024년 4월 10일
0

SQL

목록 보기
2/19
post-thumbnail

#SQL

  • 1주차 복습

- 2주차

1. SQL로 계산하기

  1. 숫자 연산 기호 사용
    더하기(+), 빼기(-), 곱하기(*), 나누기(/) 와 같은 기본적인 기호 연산 가능
SELECT food_preparation_time,
       delivery_time,
       food_preparation_time( + , - , * , / )delivery_time AS total_time
FROM food_orders

  1. 함수 사용
    합계(SUM(컬럼)), 평균(AVG(컬럼)) 을 통해 총계, 평균 구하기 가능.
SELECT SUM(food_preparation_time) total_food_preparation_time,
       AVG(delivery_time) avg_food_preparation_time
FROM food_orders

  1. 전체 데이터 갯수 구하기
    COUNT(컬럼) (컬럼명 대시 1 혹은 * 사용 가능)
    DISTINCT: (중복을 제거한)몇 개의 값을 가지고 있는지 구할 때
SELECT COUNT(1) count_of_orders,
       COUNT(DISTINCT customer_id) count_of_customers
FROM food_orders

  1. 데이터의 범위, 최솟값과 최댓값 구하기
    MIN(컬럼): 최솟값, MAX(컬럼): 최댓값
SELECT MIN(price) min_price,
       MAX(price) max_price
FROM food_orders


2. WHERE 절로 원하는 데이터 정하고, 계산 (실습)

가. 주문 금액이 30,000원 이상인 주문건의 갯수 구하기

가-1. QUERY 적기 전 흐름 정리하기

#어떤 테이블에서 데이터를 뽑을 것인가 > 주문테이블
#어떤 컬럼을 이용할 것인가 > 주문 금액, 주문 번호
#어떤 조건을 지정해야 하는가 > 30,000원 이상
#어떤 함수(수식)을 이용해야 하는가 > 갯수 구하는 수식

가-2. 구문으로 만들기

#어떤 테이블에서 데이터를 뽑을 것인가 > FROM food_orders
#어떤 컬럼을 이용할 것인가 > order_id, price
#어떤 조건을 지정해야 하는가 > WHERE price >= 30000
#어떤 함수(수식)을 이용해야 하는가 > COUNT(order_id) 또는 COUNT(1)

가-3. 전체 구조로 합치기

  SELECT COUNT(order_id) count_of_orders
  FROM food_orders
  WHERE price>=30000

나. 한국 음식의 주문당 평균 음식가격 구하기

나-1. QUERY 적기 전 흐름 정리하기

#어떤 테이블에서 데이터를 뽑을 것인가 > 주문테이블
#어떤 컬럼을 이용할 것인가 > 음식 종류, 주문 금액, 주문 수량
#어떤 조건을 지정해야 하는가 > 한국 음식
#어떤 함수(수식)을 이용해야 하는가 > 나누기, 평균

나-2.구문으로 만들기

#어떤 테이블에서 데이터를 뽑을 것인가 > FROM food_orders
#어떤 컬럼을 이용할 것인가 > cuisine_type, price, quantity
#어떤 조건을 지정해야 하는가 > cuisine_type = 'Korean'
#어떤 함수(수식)을 이용해야 하는가 > price/quantity, AVG

나-3. 전체 구조로 합치기

SELECT AVG(price) AS average_price
FROM food_orders
WHERE cuisine_type='Korean'


3. 범주별(그룹별) 연산하기

  • GROUP BY 는 카테고리 컬럼(원하는 컬럼) 지정하여 적용 가능.
기본 구조:
SELECT 카테고리컬럼(원하는컬럼 아무거나),
       SUM(계산 컬럼),
FROM
GROUP BY 카테고리컬럼(원하는컬럼 아무거나)
  • 예) 결제 타입별 가장 최근 결제일 조회하기
SELECT pay_type "결제타입",
       MAX(date) "최근 결제일"
FROM payments
GROUP BY pay_type


4. QUERY 결과 정렬하기

  • ORDER BY 는 카테고리 컬럼(원하는 컬럼) 지정하여 적용 가능.
 기본 구조:
 SELECT 카테고리컬럼(원하는컬럼 아무거나),
        SUM(계산 컬럼),
 FROM
 GROUP BY 카테고리컬럼(원하는컬럼 아무거나)
 ORDER BY 정렬을 원하는 컬럼 (카테고리컬럼(원하는컬럼 아무거나), SUM(계산 컬럼) 둘 다 가능)
  • 정렬의 종류
  • 예) 음식점별 주문 금액 최댓값 조회하기 - 최댓값 기준으로 내림차순 정렬
SELECT restaurant_name,
       MAX(price) "최대 주문금액"
FROM food_orders
GROUP BY restaurant_name
ORDER BY MAX(price) DESC


5. 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 

☑️ POINT!
결과를 정렬하는 ORDER BY는 SELECT 문에서 데이터를 선택한 후 실행된다.


쿼리 작성 전에 흐름을 정리하고
각 구문별로 작성해본 후
전체 구조로 합치는 연습하기!

profile
커피 좋아하는 데이터 꿈나무

0개의 댓글

관련 채용 정보