SQL
스파르타 코딩클럽(부트캠프) SQL 입문 2장
H.S-Backend
2024. 3. 14. 16:07
반응형
한 번에 계산하는 SQL 컬럼
SUM(합계)
AVERAGE(평균)
COUNT(갯수)
MIN(최솟값)
MAX(최댓값)
숫자 연산종류
연산자 | 설명 |
+ | 더하기 |
- | 빼기 |
* | 곱하기 |
/ | 나누기 |
전체 데이터 갯수 구하기
데이터 갯수 구할 떄 : COUNT(컬럼) *
컬럼명 대신 1 혹은 *사용가능
몇 개의 값을 가지고 있는지 구할 때 : DISTINCT(컬럼)
사용 예시 1 (주문건수와, 주문 한 고객 수 구하기)
select count(1) count_of_orders,
count(distinct customer_id) count_of_customers
from food_roders
사용예시 2 (데이터의 범위 최솟값과 최댓값 구하기)
select min(price) min_price,
max(pirce) max_price
from food_orders
주문금액 30,000원 이상인 주문 건의 개수 구하기
Query를 적기 전에 흐름 정리
1. 어떤 테이블에서 데이터를 뽑을 것인가 - 주문테이블 - from food_orders
2. 어떤 컬럼을 이용할 것인가 - 주문금액, 주문번호 - order_id, price
3. 어떤 조건을 지정해야 하는가 - 30,000원 이상 - where price >= 30000
4. 어떤 함수(수식)를 이용해야 하는가 - 개수 구하는 수식 - count(order_id) 혹은 count(1)
사용 예시
select count(order_id) count_of_orders
from food_orders
where price>=30000
GROUP BY 란
WHERE 절을 사용해서 수십 개의 Query를 작성하지 않고 카테고리를 지정하여 수식 함수로 연산하는 것
기본구조
select 카테고리컬럼(원하는것),
sum(계산 컬럼)
from
group by 카테고리컬럼(원하는것)
Group by 예시
select cuisine_type,
sum(price) sum_of_price
from food_orders
group by cuisine_type
Query를 적기 전에 흐름 정리 (음식 주문별 금액 최댓값)
- 어떤 테이블에서 데이터를 뽑을 것인가 - 주문테이블 - from food_orders
- 어떤 컬럼을 이용할 것인가 - 음식점 이름, 주문금액 - restaurant_name, price
- 어떤 조건을 지정해야 하는가 - 없음
- 어떤 함수(수식)를 이용해야 하는가 - 최댓값 - max(price)
사용예시
select restaurant_name,
max(price) "최대 주문금액"
from food_orders
group by restaurant_name
Query를 적기 전에 흐름 정리 (결제 타입별 가장 최근 결제일 조회)
- 어떤 테이블에서 데이터를 뽑을 것인가 - 결제테이블 - from payments table
- 어떤 컬럼을 이용할 것인가 - 결제타입, 결제일 - pay_type, date
- 어떤 조건을 지정해야 하는가 - 없음
- 어떤 함수(수식)를 이용해야 하는가 - 최댓값 max(date)
사용예시
select pay_type "결제 타입",
max(date) "최근 결제일"
from payments
group by pay_type
Order by 란
SQL 결과를 원하는 값 기준으로, 오름차순 혹은 내림차순으로 정렬하는 컬럼
정렬의 종류
종류 | 구문 | 예시 |
오름차순 | 생략 | order by sum(price) |
내림차순 | desc | order by sum(pirce) desc |
Order by 기본구조
select 카테고리컬럼(원하는것),
sum(계산컬럼),
from
group by 카테고리컬럼(원하는것)
order by 정렬을 원하는 컬럼 (카테고리컬럼(원하는것) ), sum(계산 컬럼) 둘 다 가능하다.
Order by 예시 (음식 종류별 주문 금액 합계를 '주문 금액 합계' 기준으로 오름차순 정렬)
select cuisine_type,
sum(price) sum_of_price
from food_orders
group by cuisine_type
order by sum(price)
Query를 적기전에 흐름 정리 (음식 주문 금액 최댓값 조회 - 최댓값 기준으로 내림차순 정렬)
- 어떤 테이블에서 데이터를 뽑을것인가 - 음식 주문 - from food_orders
- 어떤 컬럼을 이용 할 것인가 - 금액 - restaurant_name, price
- 어떤 조건을 지정해야 하는가 - 없
- 어떤 함수(수식)을 이용해야 하는가 - 최댓값 max(price), order by desc
사용예시
select restaurant_name
max(price) "최대 주문금액"
from food_orders
group by restaurant_name
order by max(price) desc
Query를 적기전에 흐름 정리 (고객을 이름 순으로 오름차순으로 정렬)
- 어떤 테이블에서 데이터를 뽑을것인가 - 고객명단 - from customers
- 어떤 컬럼을 이용 할 것인가 - 고객명 - name
- 어떤 조건을 지정해야 하는가 - 없음
- 어떤 함수(수식)을 이용해야 하는가 - order by
사용예시
select *
from customers
order by name
반응형