PM 부트캠프 47일차 후기

오늘은 서비스 기획 심화 과제 제출 마지막날이었다.
PM 부트캠프에서 친해진 친구 중에 아직 과제를 덜 끝낸 친구가 있어서 어려운 부분을 가르쳐줬었다. 뿌듯뿌듯💞
오늘은 책도 읽고 여러 강의도 듣고 조금 여유로운 하루를 보냈다😊
SQL 공부 11일차
JOIN문 기초는 여기서!
[PM 부트캠프 46일차 후기] SQL의 JOIN문이란?
PM 부트캠프 46일차 후기오늘은 이번조의 담임 튜터님이랑 1:1 면담이 있었다. 30분이었던 면담이 많은 질문으로 인해서 1시간 넘게 이야기를 나눴었다.면담하고 있으니 다른 튜터님들도 구경오셨
mimiyu.tistory.com
챕터 4-6 JOIN으로 두 테이블의 데이터 조회하기
실습6-1 한국음식의 주문별 결제 수단과 수수료율을 조회해 줘
조회 컬럼 : 주문 번호, 식당 이름, 주문 가격, 결제 수단, 수수료율
*결제 정보가 없는 경우도 포함하여 조회
select f.order_id,
f.restaurant_name,
f.price,
p.pay_type,
p.vat
from food_orders f left join payments p on f.order_id=p.order_id
where cuisine_type='Korean'

실습6-2 고객의 주문 식당 조회해 줘.
조회 컬럼 : 고객 이름, 연력, 성별, 주문 식당
*고객명으로 정렬, 중복 없도록 조회
select distinct c.name,
c.age,
c.gender,
f.restaurant_name
from food_orders f left join customers c on f.customer_id=c.customer_id
order by c.name

◆ NULL
- SQL에서 NULL은 값이 없거나 모른다는 것을 의미.
IS NULL
- IS NULL이란? NULL값이 뜬 데이터만 조회하는 것
IS NOT NULL의 기본 구조
select 컬럼명
from 테이블명
where 컬럼명 is null
IS NOT NULL
- Is not null이란? NULL값이 아닌 데이터만 조회하는 것
IS NOT NULL의 기본 구조
select 컬럼명
from 테이블명
where 컬럼명 is not null
◆ SELECT DISTINCT
- Selesct Distinct이란? 중복되는 데이터를 제거하고 조회할 때 사용하는 키워드
SELECT DISTINCT의 기본 구조
select distinct 조회할 컬럼
from 테이블
실습6-3 고객의 주문 식당 조회해 주고 NULL값이 아닌 데이터만 조회해 줘.
조회 컬럼 : 고객 이름, 연력, 성별, 주문 식당
*고객명으로 정렬, 중복 없도록 조회
select distinct c.name,
c.age,
c.gender,
f.restaurant_name
from food_orders f left join customers c on f.customer_id=c.customer_id
where c.name is not null
order by c.name

◆ DISTINCT
- Distinct이란? 중복되는 데이터를 제거하고 조회할 때 사용하는 키워드
DISTINCT의 기본 구조
select distinct 조회할 컬럼
from 테이블
챕터 4-7 JOIN으로 두 테이블의 값을 연산하기
실습7-1 주문 가격과 수수료율을 곱하여 주문별 수수료를 구해줘
조회 컬럼 : 주문 번호, 식당 이름, 주문 가격, 수수료율, 수수료
*수수료율이 있는 경우만 조회 조회
select f.order_id,
f.restaurant_name,
f.price,
p.vat,
f.price*p.vat "수수료율"
from food_orders f inner join payments p on f.order_id=p.order_id

실습7-2 50세 이상 고객의 연령에 따라 경로 할인율을 적용하고, 음식 타입별로 원래 가격과 할인적용한 가격의 합을 각각 구해줘.
조회 컬럼 : 음식타입, 원래 가격, 할인 적용 가격
경로 할인 : (나이-50)*0.005 / 고객 정보가 없는 경우도 포함하여 조회 / 할인 금액이 큰 순서대로 정렬
select a.cuisine_type,
sum(price) as "원래 가격",
sum(price*a.할인율) as "할인 적용 가격"
FROM
(
select f.cuisine_type,
f.price,
c.age,
(c.age-50)*0.005 as "할인율"
from food_orders f left join customers c on f.customer_id=c.customer_id
where c.age>=50
) a
group by 1
order by 3 desc

◆ 과제
식당별 평균 음식 주문 금액과 주문자의 평균 연령을 기반으로 segmentation 하기
- 평균 음식 주문 금액 기준 : 5,000 이하 / ~10,000 / ~30,000 / 30,000 초과
- 평균 연령 : ~ 20대 / 30대 / 40대 / 50대 이상
- 두 테이블 모두에 데이터가 있는 경우만 조회, 식당 이름 순으로 오름차순 정렬
select restaurant_name,
case when avg_price <=5000 then '그룹1_평균 5000 이하'
when avg_price >5000 and avg_price<=10000 then '그룹2_평균 5001~10000'
when avg_price >10000 and avg_price<30000 then '그룹3_평균 10001~30000'
when avg_price>30000 then '그룹4_30000 초과' end '평균 음식 주문 금액 그룹',
case when avg_age<30 then '그룹1_20대 이하'
when avg_age between 30 and 39 then '그룹2_30대'
when avg_age between 40 and 49 then '그룹3_40대'
else '그룸4_50대 이상' end '평균 연령 그룹'
from
(
select f.restaurant_name,
avg(price) 'avg_price',
avg(age) 'avg_age'
from food_orders f inner join customers c on f.customer_id=c.customer_id
group by 1
) a
order by 1

'PM 부트캠프' 카테고리의 다른 글
| [PM 부트캠프 49일차 후기] 벌써 금요일!! (0) | 2025.08.22 |
|---|---|
| [PM 부트캠프 48일차 후기] 나이키 아티클을 읽고...나도 잘하고 있어! (0) | 2025.08.21 |
| [PM 부트캠프 46일차 후기] SQL의 JOIN문이란? (0) | 2025.08.19 |
| [PM 부트캠프 45일차 후기] Miyubnb 사이트 완성! (0) | 2025.08.18 |
| [PM 부트캠프 44일차 후기] 과제를 고양이와 함께하는 숙소로 만들어버렷! (3) | 2025.08.14 |