- 오늘의 키워드
엑셀 함수 (SUM, AVG, COUNT, MIN, MAX), GROUP BY, ORDER BY
- 오늘 배운 내용 정리
SQL을 통해 데이터베이스에 질의를 할때 계산식을 활용하여 질의를 할 수 가 있다.
예시) 상품준비시간과 배달시간의 합계 구하기
select food_preparation_time,
delivery_time,
food_preparation_time + delivery_time as total_time
//상품 준비시간과 배송시간을 합한 시간을 총걸린시간으로 별명을 지어주었다
from food_orders
숫자 연산 종류
연산자 | 설명 |
+ | 더하기 |
- | 빼기 |
* | 곱하기 |
/ | 나누기 |
이러한 숫자 연산 말고도 함수를 이용해서 SQL을 질의를 할 수 가 있다.
함수 종류
- 합계 : SUM()
- 평균 : AVG()
예시 : 상품 준비시간의 합계와 평균 구하기
select sum(food_preparation_time) total_food_preparation_time,
// sum함수를 통하여 총 음식 주문 테이블의 총 준비시간을 구한다.
avg(delivery_time) avg_food_preparation_time
//avg함수를 통하여 음식 주문 테이블의 평균 준비시간을 구한다.
from food_orders
전체 데이터의 개수를 구하기 위한 함수도 존재한다.
함수 종류
- 데이터 갯수 : COUNT() * 컬럼 명 대신 1 또는 * 사용 가능
- 몇개의 값을 가지고 있는지 구할때 : DISTINCT
예시
- 데이터의 갯수 : 주문 테이블의 전체 주문은 몇건인가요?
- 몇개의 값을 가지고 있는지 구할때 : 주문을 한 고객은 몇명인가요?
select count(1) count_of_orders,
//count괄호안에 1을 넣어 줌으로써 전체 주문의 갯수를 구한다.
count(distinct customer_id) count_of_customers
//distinct를 넣어줌으로써 고객들의 중복 주문을 배제하고 주문한 고객들의 수를 구한다.
from food_orders
데이터의 범위, 최솟값과 최대값 구하기
조회하는 데이터의 최솟값, 최대값을 구할 수가 있다.
함수 종류
- 최솟값 : MIN()
- 최댓값 : MAX()
select min(price) min_price,
//min이라는 함수를 이용해 가격 컬럼의 최솟값을 구할 수 있다.
max(price) max_price
//max이라는 함수를 이용해 가격 컬럼의 최솟값을 구할 수 있다.
from food_orders
범주를 구하는 연산 GROUP BY
단위를 나누어서 숫자를 계산할 수 있다.
예시 : 카테고리별로 숫자 연산을 간단하게 한다.(음식 종류 별, 식당 별)
여러번의 질의 없이 카테고리를 지정하여 수식 함수로 연산을 할 수 있다.
GROUP BY 기본 구조
카테고리 컬럼 지정 그 후 group by를 작성해 주어야 적용함.
select 카테고리컬럼(원하는컬럼 아무거나),
sum(계산 컬럼),
from
group by 카테고리컬럼(원하는컬럼 아무거나)
Group by를 하기위해 질의를 하기전에 흐름을 정리를 해보면
- 어떤 테이블에서 데이터를 뽑을 것인가
- 어떤 컬럼을 이용할 것인가
- 어떤 조건을 지정해야 하는가
- 어떤 함수 및 수식을 이용해야 하는가
를 생각하여 SQL을 작성한다.
SQL로 결과를 정렬하는 방법 ORDER BY
질의문의 결과를 좀더 가독성 있게 보기위해 ORDER BY를 이용하여 오름차순(ASC), 내림차순(DESC)를 사용한다.
기본 구조
select 카테고리컬럼(원하는컬럼 아무거나),
sum(계산 컬럼),
from
group by 카테고리컬럼(원하는컬럼 아무거나)
order by 정렬을 원하는 컬럼 (카테고리컬럼(원하는컬럼 아무거나), sum(계산 컬럼) 둘 다 가능)
정렬의 종류
종류 | 구문 | 예시 |
오름차순 | ASC(생략 가능) | order by sum(price) |
내림차순 | desc | order by sum(price) desc |
이렇게 데이터를 조회할 때 사용하는 SQL의 기본 구조들을 각각 살펴 보았다.
이것들을 한데 모아 구조 순서들을 봐보면
select
from
where
group by
order by
이러한 순서로 구조를 기억하고 사용하면 된다.
- 오늘의 회고
이렇게 SQL의 기본구조를 알게 되었고 이 구조들을 기반으로 더 세세하게 원하는정보만 조회를 할 수 있도록 할 것이다. 추후에는 서브쿼리 및 조인을 활용하여 이 데이터베이스에 조회된 항목에서 더 연산을 조합하여 세세하게 조회를 하거나 이 데이터베이스에 없는 정보를 다른데이터베이스에서 엮어와 다른 데이터까지 조회를 해보겠다.
'내일배움캠프' 카테고리의 다른 글
내일배움 캠프 8일차 TIL - 객체 지향 언어 Java 클래스에 대해 알아보자 (1) | 2024.01.03 |
---|---|
내일배움캠프 7일차 TIL - Java의 컬렉션(Collection) List, Queue, Set, Map (0) | 2024.01.02 |
내일배움캠프 6일차 TIL - JAVA의 기본 변수타입을 기억하자 (0) | 2023.12.29 |
내일배움캠프 3일차 TIL + SQL을 기본을 다져보자 (0) | 2023.12.26 |
내일배움캠프 1일차 TIL + git을 활용하여 협업을 하자 (2) | 2023.12.21 |