SQL 2주차

윤수빈·2024년 6월 26일
0
post-custom-banner

[엑셀보다 쉽고 빠른 SQL] 2주차 정리

SQL 1주차 에 이어서 SQL 2주차 마무리까지 정리한 글이다.


1. 엑셀 계산식 사용하기

엑셀에서 기본적으로 사용하는 SUM(), AVERAGE(), COUNT(), MIN(), MAX() 함수를 SQL Query로 사용하는 법에 대해 공부했다.

기본적으로 우리가 사용하는 +, -, /, * 사용이 가능하다.
다만, 데이터 타입이 숫자여야 한다

👉🏻 기본 연산, 합계와 평균

사용하고자 하는 함수를 쓰고 괄호(매개변수)안에 컬럼값을 넣어 준다.

예시) food_orders 테이블의 price 라는 컬럼값을 기준으로 설명!!

  • SELECT SUM(price) => 음식 가격의 합을 조회한다.
  • SELECT AVERAGE(price) => 음식 가격의 평균을 조회한다.
  • SELECT COUNT(price) => 음식 가격의 수를 조회한다다. (보통 필터를 통해 조회된 컬럼의 개수를 구한다.)
  • SELECT MIN(price) => 음식 가격의 최솟값을 조회한다.
  • SELECT MAX(price) => 음식 가격의 최댓값을 조회한다.

📌 함수명은 소문자로 적어도 동작한다

🤗 활용 예시)
food_orders 테이블에서 가격이 20000이상 30000미만인 것 중 가격이 최댓값인 레스토랑의 이름과 가격을 조회한다.

SELCET restaurant_name, max(price)
FROM food_orders
WHERE (price>=20000 and price<30000)

2. GROUP BY로 카테고리 구하기

GROUP BY 절의 경우 카테고리를 지정하여 연산하거나 조회할 때 유용하다.
예를 들어, 지역별 주민정보에 대한 테이블이 있다고 한다면 지역별 주민들의 나이 평균을 알고싶어! 라고 했을 때 '지역'이라는 카테고리에 컬럼이 있다면 group by 절을 사용하여 쉽게 조회할 수 있다.

📌 단, 사용할 때 주의점은 group by는 꼭 where 뒤에 와야한다!

👉🏻 카테고리 별 연산하기
1. 조회하고자 하는 카테고리를 떠올립니다.
2. 카테고리가 조회하는 테이블의 컬럼에 있는지 확인합니다.
3. 조회하고자 하는 연산과 함께 group by로 카테고리를 설정합니다.

🤗 활용 예시)
결제 타입별 가장 최근 결제일을 조회한다.
여기서 카테고리는 '결제 타입' 이다!

SELECT pay_type "결제 타입",
       max(date) "최근 결제일"
FROM payments
GROUP BY pay_type

3. Query 결과를 정렬하기

오름차순 내림차순으로 정렬하고 데이터를 조회하고 싶을 때 사용한다.
정렬은 컬럼과 정렬순서를 지정할 수 있다.

📌 단, 사용할 때 주의점은 order by는 꼭 group by 뒤에 와야한다!
📌 연산 함수도 사용 가능하다!

👉🏻 조회하는 데이터 정렬하기
1. 정렬하고자 하는 컬럼을 떠올립니다.
2. 오름/내림차 순을 지정합니다.
3. 중첩 정렬이라면 어떤 컬럼이 제일 먼저 정렬되어야 하는지 정합니다.
4. 명령문 마지막에 order by로 해당 컬럼을 정렬합니다.

🤗 활용 예시)
음식 주문 테이블에서 음식 종류별 주문 금액 합계 기준 내림차순으로 정렬하고 음식 종류별 금액 합계를 조회한다.
여기서 중요한건 '주문 금액 합계 기준' 이다!

SELECT cuisine_type, sum(price)
FROM food_orders
group by cuisine_type
order by sum(price) desc

select 에 sum(price)와 order by 에 sum(price)를 맞추는 것이 중요!


4. SQL 구조 익히기

SQL을 작성할 때는 순서와 구문을 이해하는 것이 중요하다.

👉🏻 순서 맞추기

1. select
2. from
3. where
4. group by
5. order by

위 순서를 지키지 않으면 아래처럼 'error position' 문법 오류가 발생한다

📌 상위 순서 명령문이 필요없는 경우 생략해도 된다.

👉🏻 구문 이해하기

  1. where age between 20 and 40
  2. select age, count(name) count_of_name
  3. order by age
  4. group by age
  5. from customers

각 구문 별 의미를 이해하고 문제로 적용하는 것이 중요하다.

  1. 나이가 20~40 사이의
  2. 나이와 조건에 해당하는 사람의 수를 "count_of_name" 으로 조회한다.
  3. 나이 오름차 순으로 정렬한다.
  4. 나이별로 묶어 조회한다.
  5. customers 라는 테이블에서

즉, customers 테이블에서 나이가 20~40인 사람의 수를 나이 별로 오름차순으로 정렬하여 조회한다. 라는 뜻이고, 순서는 2->5->1->4->3 이 된다.


profile
정의로운 사회운동가
post-custom-banner

0개의 댓글