[TIL]_2025.03.07 본캠프 19일차 (2): QCC

JIYUU·2025년 3월 7일

1. 이메일 프로모션 고객

- 문제

person 테이블 이용하여,
이메일 프로모션을 수락한 개인(소매) 고객의 수를 계산하여 출력하시오

- 내가 작성한 답

select count(business_entity_id) as customer_count
from person
where email_promotion in('1, 2') and person_type = 'IN'

- 조건

이메일 프로모션을 수락 (1, 2)
개인(소매) 고객 = IN

- 해설

email_promotion >= 1 또는 <> 0 으로 구하는 방법도 있다.
count(distinct 를 사용해도되지만,
business_entity_id가 PK라 중복이 없기 때문에 그냥 count 사용 가능

select count(distinct business_entity_id) as customer_count
from person
where person_type = 'IN' and email_promotion in (1, 2)

-- 8153 출력

- 회고

  • DISTINCT를 잊지말자
    항상 distinct를 내가 자주 까먹는 편이다.
    이번에는 PK여서 다행히 괜찮지만 중복이 있을 수 있음을 항상 명시하자.

  • 문제 풀기 전 TABLE 확인을 하자
    select * 로 한번 테이블의 각 행별로 어떤 데이터값이 어떻게 들어가있는지 확인을 할 필요가 있다.
    특히 중복값이 있는지, 한 행에 데이터가 ','로 연결되어서 여러 개가 입력되어 있는지 확인이 필요하다.

2. VIP 고객 산출

오더 헤더는 주문 정보 데이터
오더 디테일은 주문에 대한 세부 정보 데이터
세일즈 커스토머는 고객 정보
퍼슨은 고객 개인 정보

PK는 한 테이블에 한 개 이상 있을 수 있음!
그 테이블의 고유의 값이 됨
주석을 활용하여 내가 작성해야하는 데이터를 미리 입력해두면 좋다!
제대로 쿼리를 작성했는지 확인하려면 MIN, MAX로 중간에 확인 가능
잘 작성했다면 기간에 맞는 값이 잘 나올 것임

답안은 JOIN을 그냥 INNER JOIN으로 했는데 이번 문제에서는 상관이 없다고 함
그리고 조인할 때 전체 테이블 조인하지말고 원하는 컬럼만 가져와서 조인하는 것도 아주 좋은 것 시도다.

0개의 댓글