본문 바로가기
카테고리 없음

4주차 SQL 서로 다른 테이블에 있을 때 조회하기 (JOIN)

by 그 해 우리는 2024. 11. 25.

01. 지난 시간 복습

스파르타 코딩클럽

<aside> 👉 문자 변경

  1. REPLACE : 지정한 문자를 다른 문자로 변경
  2. SUBSTRING : 특정 문자만 추출
  3. CONCAT : 여러 문자를 합하여 포맷팅 </aside>
대표사진 삭제

사진 설명을 입력하세요.

02. 여러 번의 연산을 한 번의 SQL 문으로 수행하기 (Subquery)

스파르타 코딩클럽

1) Subquery 가 필요한 경우

대표사진 삭제

사진 설명을 입력하세요.

대표사진 삭제

사진 설명을 입력하세요.

- Subquery 문 안을 수정해서, 음식 주문시간이 25분보다 초과한 시간을 가져오기

대표사진 삭제

사진 설명을 입력하세요.

3) User Segmentation 와 조건별 수수료를 Subquery 로 결합해보기

스파르타 코딩 클럽

  1. [실습] 음식점의 평균 단가별 segmentation 을 진행하고, 그룹에 따라 수수료 연산하기
  • (수수료 구간 -
  • ~5000원 미만 0.05% ~20000원 미만 1% ~30000원 미만 2% 30000원 초과 3%)REPLACE

 

  1. 어떤 테이블에서 데이터를 뽑을 것인가 → from food_orders
  2. 어떤 컬럼을 이용할 것인가 → restaurant_name, price, quantity
  3. 어떤 조건을 지정해야 하는가 → X
  4. 어떤 함수 (수식) 을 이용해야 하는가 → avg(price/quantity), case when, group by

avg(price/quantity), case when, group by

 

2) [실습] 음식점의 지역과 평균 배달시간으로 segmentation 하기

대표사진 삭제

사진 설명을 입력하세요.

2_1

대표사진 삭제

사진 설명을 입력하세요.

 

05. 필요한 데이터가 서로 다른 테이블에 있을 때 조회하기 (JOIN)

스파르타 코딩 클럽

  1. 1) JOIN 이 필요한 경우] 💡 주문 가격은 주문테이블에 있지만, 어떤 수단으로 결제를 했는지는 결제테이블에 있어요

💡 주문을 한 사람을 확인하려면, 주문 테이블과 고객 테이블에서 각각 정보를 가져와서 엑셀에서 합쳐줘야 해요

💡 주문 건별 수수료를 계산하려면 수수료율이 필요한데, 결제 테이블에 있어서 어떻게 연산할 수 있을지 모르겠어요

  • 2) JOIN 의 기본 원리와 종류
  • JOIN 은 기본적으로 엑셀의 Vlookup 과 유사합니다 아래와 같은 경우,
  • (엑셀에서는 vlookup(고객ID, 고객 정보, 3, False) 라고 적으실 것입니다)
대표사진 삭제

사진 설명을 입력하세요.

대표사진 삭제

사진 설명을 입력하세요.

대표사진 삭제

사진 설명을 입력하세요.

대표사진 삭제

사진 설명을 입력하세요.

  • 2.구문으로 만들기 (해답)
  • LEFT JOIN : 공통 컬럼 (키값) 을 기준으로, 하나의 테이블에 값이 없더라도 모두 조회되는 경우를 의미합니다. 우리의 예시로 보면 아래와 같습니다.
대표사진 삭제

사진 설명을 입력하세요.

TIP!

대표사진 삭제

사진 설명을 입력하세요.

  • INNER JOIN : 공통 컬럼 (키값) 을 기준으로, 두 테이블 모두에 있는 값만 조회합니다. 즉, 위의 예시에서 주문번호 14의 경우, 고객에 대한 정보가 고객 정보에 없으므로 조회 시 제외됩니다.
대표사진 삭제

사진 설명을 입력하세요.

06. [실습] JOIN 으로 두 테이블의 데이터 조회하기

스파르타 코딩클럽

1) join 실습

대표사진 삭제

사진 설명을 입력하세요.

2) null 제거

대표사진 삭제

사진 설명을 입력하세요.

사진 삭제

사진 설명을 입력하세요.

07. [실습] JOIN 으로 두 테이블의 값을 연산하기

스파르타 코딩 클럽

1 .구문으로 만들기

  1. 어떤 테이블에서 데이터를 뽑을 것인가 → from food_orders, payments
  2. 어떤 컬럼을 이용할 것인가 → order_id, restaurant_name, price, vat
  3. 어떤 조건을 지정해야 하는가 → X
  4. 어떤 함수 (수식) 을 이용해야 하는가 → inner join, price*vat

 

대표사진 삭제

사진 설명을 입력하세요.

  • 2.구문으로 만들기
  1. 어떤 테이블에서 데이터를 뽑을 것인가 → from food_orders, customers
  2. 어떤 컬럼을 이용할 것인가 → cuisine_type, price, age
  3. 어떤 조건을 지정해야 하는가 → where age>=50
  4. 어떤 함수 (수식) 을 이용해야 하는가 → avg(price/quantity), case when, group by

존재하지 않는 이미지입니다.

사진 삭제

사진 설명을 입력하세요.

대표사진 삭제

사진 설명을 입력하세요.

select cuisine_type,

sum(price) "원래 가격",

sum(price)-sum(discount_price) "할인 적용 가격",

sum(discount_price) "할인 가격"

from

(

select a.cuisine_type,

price,

price*((b.age-50)*0.005) discount_price

from food_orders a inner join customers b on a.customer_id=b.customer_id

where b.age>=50

) t

group by 1

order by 4 desc