연산자 | 설명 |
---|---|
+ | 더하기 |
- | 빼기 |
* | 곱하기 |
/ | 나누기 |
테이블의 각 속성끼리의 사칙연산을 통해 새로운 파생변수를 생성할 수 있다.
예를 들어 음식 주문 정보 데이터에서 음식 준비 시간과 배달 시간이 주어졌을 때, 두 시간을 더하여 걸린 총 시간을 구할 수 있다.
select food_preparation_time , delivery_time , food_preparation_time + delivery_time as total_time
from food_orders
sql에서도 마찬가지로 엑셀 관련 문제를 구현할 수 있다. 원하는 함수 안에 데이터의 컬럼명을 적으면 된다
select sum(food_preparation_time) total_food_preparation_time,
avg(delivery_time) avg_delivery_time
from food_orders
한 고객이 여러번 주문을 할 수 있어 주문 정보에 고객의 중복이 발생할 수 있다.
이때 고객의 수만 세고 싶을땐 중복을 제거한다는 의미의 distinct를 사용한다
select count(1) count_of_orders, count(distinct customer_id) count_of_customers
from food_orders
select min(price) min_price, max(price) max_price
from food_orders
SELECT avg(price) as avg_price
from food_orders
where cuisine_type = 'Korean'
select count(*) cnt_orders
from food_orders
where price>=30000
종류별로 그룹화하기 위해 where절을 사용해서 수십개의 쿼리를 작성하는 비효율을 막기 위해 Group by를 사용한다. 예를 들어 음식 주문 정보라고 했을 때, 음식 종류별로 평균/총 가격을 알고 싶을 때 group by를 사용하여 각 음식 종류별 가격을 구할 수 있다.
select 카테고리컬럼(원하는컬럼 아무거나),
sum(계산 컬럼),
from
group by 카테고리컬럼(원하는컬럼 아무거나)
select cuisine_type, max(price)
from food_orders
group by cuisine_type
select pay_type, max(date) recent_date
from payments
group by pay_type
위의 쿼리문을 이용해 결과를 도출했을 때, 결과가 뒤죽박죽 나올 때가 있다.
이때 쿼리문의 결과를 Order by를 이용해 특정 컬럼을 기준으로 오름차순/내림차순으로 정렬할 수 있다.
select 카테고리컬럼(원하는컬럼 아무거나),
sum(계산 컬럼),
from
group by 카테고리컬럼(원하는컬럼 아무거나)
order by 정렬을 원하는 컬럼 (카테고리컬럼(원하는컬럼 아무거나), sum(계산 컬럼) 둘 다 가능)
종류 | 구문 | 예시 |
---|---|---|
오름차순 | 생략 | order by sum(price) |
내림차순 | desc | order by sum(price) desc |
select restaurant_name,
max(price) as max_price
from food_orders fo
group by restaurant_name
order by max_price desc
select cuisine_type,
sum(price) sum_of_price
from food_orders
group by cuisine_type
order by sum(price)
order by를 이용하면 하나의 컬럼만을 기준으로 하는 것이 아니라 여러 컬럼을 기준으로 오름차순이 가능하다
select *
from customers
order by gender, name
음식 종류별 가장 높은 주문 금액과 가장 낮은 주문금액을 조회하고, 가장 낮은 주문금액 순으로 (내림차순) 정렬하기
가장 높은 주문금액과 낮은 주문금액을 구해야 하므로 max(price), min(price)를 사용하고,
가장 낮은 주문금액 순으로 내림차순하므로 order by min(price) desc를 사용한다.
음식 종류별로 최대, 최소를 구해야 하므로 group by cuisine_type를 사용한다
SELECT cuisine_type, max(price) as max_price, min(price) as min_price
FROM food_orders
group by cuisine_type
order by min_price desc