[내일배움캠프 사전캠프] '25.07.28(월) / 사전캠프 3주차(1)

1. 오늘의 학습 키워드

  • (아티클) 마케터에게 데이터분석이란? 왜 필요할까?
  • (강의) 엑셀보다 쉽고 빠른 SQL 4주차

 

 

 

 

2. 오늘의 학습 내용 정리

1) Subquery, Join 복습하기

👉 Subquery
1. Query 결과를 Query 에 다시 활용하는 것
2. 기본 형식
select column1, special_column
from
    ( /* subquery */
    select column1, column2 special_column
    from table1
    ) a​
👉 join
1. 두 개 이상의 테이블을 결합하여 사용하는 것
2. JOIN 의 형태에 따라 Left join, Inner join 등이 있음
3. 기본 형식
-- LEFT JOIN
select 조회 할 컬럼
from 테이블1 a left join 테이블2 b on a.공통컬럼명=b.공통컬럼명

-- INNER JOIN
select 조회 할 컬럼
from 테이블1 a inner join 테이블2 b on a.공통컬럼명=b.공통컬럼명​

 

 

2) [실습] 50세 이상 고객의 연령에 따라 경로 할인율을 적용하고, 음식 타입별로 원래 가격의 합과 할인 적용 가격의 합을 구하기

  • 고객 정보가 없는 경우도 포함하여 조회, 할인 금액이 큰 순서대로 정렬 ➡️ left join 함수 사용
  • (조회 컬럼 : 음식 타입, 원래 가격, 할인 적용 가격) *할인 : (나이-50)*0.005
select cuisine_type,
       sum(price) sum_price,
       sum(price*discount_rate) discounted_price
from 
(
select f.cuisine_type,
       f.price,
       c.age,
       (c.age-50)*0.005 discount_rate
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

 

 

 

 

3. 학습하며 겪었던 문제점 & 에러

[4주차 숙제] 식당별 평균 음식 주문 금액과 주문자의 평균 연령을 기반으로 Segmentation 하기

- 평균 음식 주문 금액 기준 : 5,000 이하 / ~10,000 / ~30,000 / 30,000 초과

- 평균 연령 : ~ 20대 / 30대 / 40대 / 50대 이상

 

(문제점) 아래의 쿼리 [case when 조건 then] 후에 오는 입력값을 'price_group1' 에서 ' ' 를 넣지 않고 price_group1 로 작성하고 실행하여 계속해서 오류가 있었다. 작성한 쿼리문을 계속 확인을 해보고 해설까지 확인한 후에야 문제가 무엇인지 확인할 수 있었다.

select restaurant_name,
       case when avg_price <=5000 then 'price_group1'
            when avg_price <=10000 then 'price_group2'
            when avg_price <=30000 then 'price_group3'
            else 'price_group4' end price_group,
       case when avg_age <30 then 'age_group1'
            when avg_age between 30 and 39 then 'age_group2'
            when avg_age between 40 and 49 then 'age_group3'
            else 'age_group4' end age_group
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

 

 

 

 

4. 내일 학습 할 것은 무엇인지

  • (강의) 엑셀보다 쉽고 빠른 SQL 5주차

 

끝.