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주차를 마무리 하겠다.
'부트캠프' 카테고리의 다른 글
| 7) 랭크게임 하다가 싸워서 피드백 남겼어요… (3) | 2024.10.22 |
|---|---|
| 6) 팀 프로젝트 열심히 했으니 다시 놀아볼까요?! (0) | 2024.10.22 |
| 5) 공부하다보니 팀 프로젝트 시간이 왔어요! (0) | 2024.10.22 |
| 4) 이제 놀만큼 놀았으니 다시 공부해봅시다! (0) | 2024.10.22 |
| 3) 상품 주문이 들어왔으니 주문을 처리해봅시다! (0) | 2024.10.22 |