SQL
[스파르타코딩클럽] 엑셀보다 쉽고 빠른 SQL - 2주차
zzheng
2024. 11. 19. 15:55
배운 내용을 작성하고 있습니다. 혹여 해당 포스팅에서 잘못된 부분이 있을 경우, 알려주시면 빠르게 수정 조치하도록 하겠습니다. 감사합니다.
1. 엑셀 대신 SQL로 한번에 계산하기 (SUM, AVERAGE, COUNT, MIN, MAX)
1) 숫자 연산 기호를 SQL 에서도 사용하기
- 숫자 연산 종류
연산자 | 설명 |
+ | 더하기 |
- | 빼기 |
* | 곱하기 |
/ | 나누기 |
2) 기본 연산, 합계와 평균 구하기
- SQL 에서는 계산의 편의를 위해 함수를 제공하고 있습니다. 사용방법은 엑셀과 유사하고, 유일하게 다른 점은 데이터의 범위가 아닌 계산할 ‘컬럼’을 적어준다는 것입니다.
- 함수 종류
- 합계 : SUM(컬럼)
- 평균 : AVG(컬럼)
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
2. GROUP BY로 범주별 연산 한 번에 끝내기
1) 카테고리별로 숫자 연산을 간단하게 하기
☑️ 음식 종류별로 평균 음식 가격을 구하기 위해 where 절을 사용해서 수십개의 쿼리를 작성하는 것은 너무 비효율적입니다. 이 문제를 Group by를 사용해서 어떻게 해결할 수 있을까요?
- 여러번의 Query 없이, 카테고리를 지정하여 수식 함수로 연산을 할 수 있습니다.
- 이 때 사용되는 구문이 Group by 입니다.
2) Group by 기본 구조
- Group by 는 카테고리 컬럼 지정, 그리고 Group by 를 적어주는 것으로 적용 가능합니다.
- 기본 구조
select 카테고리컬럼(원하는컬럼 아무거나),
sum(계산 컬럼),
from
group by 카테고리컬럼(원하는컬럼 아무거나)
3) [실습] Group by 를 이용하여 카테고리별 연산해보기
- 음식점별 주문 금액 최댓값 조회하기
- Query 를 적기 전에 흐름을 정리해보기
- 어떤 테이블에서 데이터를 뽑을 것인가
- 어떤 컬럼을 이용할 것인가
- 어떤 조건을 지정해야 하는가
- 어떤 함수 (수식) 을 이용해야 하는가
- Query 를 적기 전에 흐름을 정리해보기 (해답)
- 어떤 테이블에서 데이터를 뽑을 것인가 → 주문 테이블
- 어떤 컬럼을 이용할 것인가 → 음식점 이름, 주문 금액
- 어떤 조건을 지정해야 하는가 → 없음
- 어떤 함수 (수식) 을 이용해야 하는가 → 최댓값
- Query 를 적기 전에 흐름을 정리해보기 (해답)
- 구문으로 만들기
- 어떤 테이블에서 데이터를 뽑을 것인가
- 어떤 컬럼을 이용할 것인가
- 어떤 조건을 지정해야 하는가
- 어떤 함수 (수식) 을 이용해야 하는가
- 구문으로 만들기 (해답)
- 어떤 테이블에서 데이터를 뽑을 것인가 → from food_orders
- 어떤 컬럼을 이용할 것인가 → restaurant_name, price
- 어떤 조건을 지정해야 하는가 → x
- 어떤 함수 (수식) 을 이용해야 하는가 → max(price)
- 전체 구조로 합치기
- Query 를 적기 전에 흐름을 정리해보기
select restaurant_name,
max(price) "최대 주문금액"
from food_orders
group by restaurant_name
3. Query 결과를 정렬하여 업무에 바로 사용하기 (ORDER BY)
1) Query 결과는 항상 동일한 순서로 출력될까
- 오름차순 : 숫자가 점점 커지는 순서로 정렬
- 내림차순 : 숫자가 점점 작아지는 순서로 정렬
2) 정렬문 Order by 의 기본구조
- Order by 는 카테고리 컬럼 지정, 그리고 Order by 를 적어주는 것으로 적용 가능합니다.
- 기본 구조
select 카테고리컬럼(원하는컬럼 아무거나),
sum(계산 컬럼),
from
group by 카테고리컬럼(원하는컬럼 아무거나)
order by 정렬을 원하는 컬럼 (카테고리컬럼(원하는컬럼 아무거나), sum(계산 컬럼) 둘 다 가능)
4. SQL 구조 마스터 - WHERE, GROUP BY, ORDER BY 로 완성되는 SQL 구조
1) 완성된 SQL 문의 기본 구조(순서를 꼭 잘 기억해주세요!)
select
from
where
group by
order by