[내일배움캠프] QA/QC_6기 - 사전캠프 6일차
- TIL
- SQL 서브쿼리와 테이블 병합
- To-Do List
- SQL 강의 수강 (Chap4 전체)
- 퀘스트 총 4개
- ADsP 강의 수강 (Chap3-1 ~ Chap4-2)
SQL
여러번의 연산을 한 번의 SQL 문으로 수행하기 (Subquery)
- Subquery가 필요한 경우
- 여러번의 연산을 수행해야 할 때
ex) 수수료를 부과할 수 있는 시간을 구하고
→ 구해진 시간에 주문 금액별 가중치를 주고
→ 가중치를 적용한 결과로 최종 배달비를 계산할 때 - 조건문에 연산 결과를 사용해야 할 때
ex) 음식 타입별 평균 음식 주문금액에 따라 음식비 상/중/하를 나누고 싶을 때 - 조건에 Query 결과를 사용하고 싶을 때
ex) 30대 이상이 주문한 결과만 조회하고 싶을
- 여러번의 연산을 수행해야 할 때
- Subquery 문의 기본 구조
- 쿼리 안에 부수적(Sub)으로 들어간 구문
select 컬럼1, specific_column
from
(
select 컬럼1, 컬럼2 specific_column
from 테이블1
) a - 실습 : 음식점의 총 주문수량과 주문 금액을 연산하고, 주문 수량을 기반으로 수수료 할인율 구하기
(조건 : 수량 5개 이하 → 10% / 15개 초과, 총 주문금액 300,000 이상 → 0.5%, 이 외에는 일괄 1%)
- 쿼리 안에 부수적(Sub)으로 들어간 구문


필요한 데이터가 서로 다른 테이블에 있을 때 조회하기 (JOIN)
- JOIN이 필요한 경우
ex) 주문 가격은 주문 테이블에 있지만, 결제 수단은 결제 테이블에 존재할 때 - JOIN의 기본 원리와 종류
- 기본적으로 엑셀의 vlookup과 유사
- 두 테이블이 공통으로 가지고 있는 컬럼을 기준으로 두 테이블을 합쳐 조회할 수 있도록 해주는 것
- LEFT JOIN : 공통 컬럼(키 값)을 기준으로 다른 테이블에 값이 없더라도 모두 조회하는 경우
select 조회 할 칼럼
from 테이블1 a left join 테이블2 b on a.공통칼럼명=b.공통칼럼명 - INNER JOIN : 공통 컬럼을 기준으로 두 테이블 모두가 가지는 값만 조회
from 테이블1 a inner join 테이블2 b on a.공통칼럼명=b.공통칼럼명 - 이 때 from 문에서 테이블1, 테이블2 옆의 a와 b는 각 테이블의 별칭 (a, b 말고 다른 문자도 상관 X)
- 실습 : 50세 이상의 고객의 연령에 따라 경로 할인율을 적용하고, 음식 타입별로 원래 가격과 할인 적용 가격 합을 구하기
할인 : (나이-50)*0.005
고객 정보가 없는 경우도 포함하여 조회, 할인 금액이 큰 순서대로 정렬


실습 문제
- 문제 : 식당별 평균 음식 주문 금액과 주문자의 평균 연령을 기반으로 Segmentation 하기
- 조건
- 평균 음식 주문 금액 기준 : 5,000원 이하 / ~10,000 / ~30,000 / 30,000 초과
- 평균 연력 : ~20대 / 30대 / 40대 / 50대 이상
- 두 테이블 모두에 데이터가 있는 경우만 조회, 식당 이름 순으로 오름차순 정렬


과제
- lol_feedbacks 테이블에서 만족도 점수(satisfaction_score)에 따라 피드백을 내림차순으로 정렬하는 쿼리를 작성해주세요.
select *
from lol_feedbacks
order by satisfaction_order desc - lol_feedbacks 테이블에서 각 유저별로 최신 피드백을 찾는 쿼리를 작성해주세요.
select user_name, max(feedback_date)
from lol_feedbacks
group by user_name
order by date desc - lol_feedbacks 테이블에서 만족도 점수가 5점인 피드백의 수를 계산하는 쿼리를 작성해주세요.
select count(1)
from lol_feedbacks
where satisfaction_score=5 - lol_feedbacks 테이블에서 가장 많은 피드백을 남긴 상위 3명의 고객을 찾는 쿼리를 작성해주세요.
select user_name, count(1) num_feedback
from lol_feedbacks
group by user_name
order by 2 desc
limit 3 - lol_feedbacks 테이블에서 평균 만족도가 가장 높은 날짜를 찾는 쿼리를 작성해주세요.
select feedback_date, avg(satisfaction_score)
from lol_feedbacks
group by 1
order by 2 desc
limit 1 - doctors 테이블에서 전공(major)가 성형외과인 의사의 이름을 알아내는 쿼리를 작성해주세요.
select name
from doctors
where major='성형외과' - doctors 테이블에서 각 전공 별 의사 수를 계산하는 쿼리를 작성해주세요.
select major, count(1)
from doctors
group by major - doctors 테이블에서 현재 날짜 기준으로 5년 이상 근무(hire_date)한 의사 수를 계산하는 쿼리를 작성해주세요.
select count(1) num_doctors
from doctors
where hire_date<=date_sub(curdate(), interval 5 year) - doctors 테이블에서 각 의사의 근무 기간을 계산하는 쿼리를 작성해주세요.
select name, datadiff(curdate(),hire_date) working_days
from doctors - patients 테이블에서 각 성별(gender)에 따른 환자 수를 계산하는 쿼리를 작성해주세요.
select gender, count(1)
from patients
group by gender - patients 테이블에서 현재 나이가 40세 이상인 환자들의 수를 계산하는 쿼리를 작성해주세요.
select count(1)
from patients
where birth_date<=date_sub(curdate(), interval 40 year) - patients 테이블에서 마지막 방문 날짜(last_visit_date)가 1년 이상 된 환자들을 선택하는 쿼리를 작성해주세요.
select name, last_visit_date
from patients
where last_visit_date<=data_sub(curdate(), interval 1 year) - patients 테이블에서 생년월일이 1980년대인 환자들의 수를 계산하는 쿼리를 작성해주세요.
select count(1)
from patients
where birth_date between '1980-01-01' and '1980-12-31'
Camp Quests
미션3 : GPT로 공정문제 원인분석 보고서 작성
배경 : 자동차 브레이크 패드 생산 A사, 최근 3개월간 2라인에서 불량률 급증
- 시나리오 파악하기
- Q1. 2라인 불량품이 급증하기 시작한 시점은 언제인가?
- 3월 이전에는 두 라인 모두 평균적으로 약 2% 정도의 불량률을 기록
- 3월부터 2라인의 불량률이 4.3%로 급격히 증가하고, 이후 4월부터는 5%를 초과하는 불량률을 기록 중
- Q2. 그 시점 전후로 바뀐 것이 있는지, 있다면 무엇인가?
- 3월 중순 원자재 공급사가 B사에서 C사로 변경된 점
- 2라인의 야간 조 작업자가 2명 교체된 점
- Q3. 가장 의심되는 원인은 뭐라고 생각하는가? (직관적으로)
- 발생한 불량 유형의 대부분이 치수 불량과 표면 불량 (합쳐서 91%)
- 3월 초에 진행한 프레스기 정기 점검을 진행하여 이전에 문제가 없었다면 이후에도 괜찮을 가능성이 높음
- 원자재 공급사의 변동으로 불량이 발생했다기에는 2라인에서만 문제가 발생
- 따라서 야간 조 작업자 2명의 작업 숙련도 부족이 원인일 가능성이 매우 높음
- Q1. 2라인 불량품이 급증하기 시작한 시점은 언제인가?
- GPT로 1차 원인 분석하기
너는 제조업 품질관리 전문 콘설턴트야.
아래는 자동차 브레이크 패드를 생산하는 A사의 2라인 불량률 데이터야.
[월별 불량률]
1월: 1라인 1.8%, 2라인 1.9%
2월: 1라인 1.7%, 2라인 2.1%
3월: 1라인 1.9%, 2라인 4.3%
4월: 1라인 1.8%, 2라인 5.7%
5월: 1라인 2.0%, 2라인 5.1%
[3월에 있었던 변경 사항]
- 3월 초: 2라인 프레스기 정기 점검 완료
- 3월 중순: 원자재 공급사 변경 (B사 → C사)
- 3월 초: 야간 조 작업자 2명 교체
[불량 유형 비율]
치수 불량 68%, 표면 불량 23%, 기타 9%
이 데이터를 바탕으로:
(1) 불량률 급증의 가능성이 높은 원인 3가지를 근거와 함께 제시해줘
(2) 각 원인별로 확인해봐야 할 데이터나 현장 점검 항목도 알려줘
(3) 표 형태로 정리해줘 (원인 / 근거 / 확인 방법) - GPT와 대화 이어가며 심화 분석하기
- 반론 제기 프롬프트
방금 분석 결과에 반론을 제기해줘.
원자재 공급사 변경이 원인이 아닐 수도 있는 이유와 근거를 제시해줘.
그리고 원자재 외에 놓쳤을 수 있는 원인이 있다면 추가해줘 - 우선순위 결정 프롬프트
가장 먼저 조치해야 할 순서를 정해줘.
기준은 "빠르게 개선 효과를 볼 수 있는 것" 순서야.
각 조치마다 예상 소요 기간과 담당 부서도 포함해줘.
- 반론 제기 프롬프트
- 원인분석 보고서 초안 작성하기
[ A사 2라인 불량률 급증 원인분석 보고서 ]
작성일: 2026-04-27
작성자: 김스파
- 현황 요약
3월부터 2라인의 불량률이 2배 이상 증가하여 불량 원인 탐색과 해결책이 필요한 상황 - 데이터 분석
- 추정 원인 (상위 3가지)
- 1. 2라인 프레스기 점검 후 세팅 또는 금형 상태 변화
- 근거: 3월 초에 진행하였고 치수불량과 직접적인 관련
- 확인 방법: 점검 이전으로 세팅값을 원복한 뒤 제조
- 2. 야간 조 작업자 교체에 따른 작업 편차
- 근거: 3월에 교체 진행했고, 장입량·금형청소·탈형 조건 등과 치수 불량의 관련성이 높음
- 확인 방법: 3월 이후 생산품의 Lot를 생산일자, 주/야간, 작업자, 금형 캐비티, 원자재 Lot 기준으로 분류하여 불량이 집중된 조건이 있는지 확인
- 3. 검사/측정 시스템 문제
- 근거: 실제 공정 불량 문제가 아니라 검사 기기의 측정, 판정 문제일 가능성
- 확인 방법: 원료 계량기·치수 측정기, 검사 Jig의 교정 상태 확인하고 동일 제품을 다른 검사자, 측정기로 교차 측정
- 1. 2라인 프레스기 점검 후 세팅 또는 금형 상태 변화
- 권고 조치 (우선순위 순)
- 2라인 프레스 recipe와 점검 전 조건 비교 후 원복
- 3월 이후 불량을 일자·조·작업자·캐비티·원자재 등 각 조건 별 재분류
- 검사/측정 시스템의 교차 점검
- 기타 의견
- 2라인의 불량률이 단독으로 상승한 것이기 때문에 1라인도 같이 이루어진 프레스기 점검, 원자재 공급사 변경이 원일일 것 같지는 않음
- 가장 유력한 부분은 야간 조 작업자 교체로 추정
- 정기 점검을 진행하지 않은 부분에서 발생한 문제인지도 확인 필요
- 현황 요약
- GPT로 보고서 피드백 받고 마무리하기

출처
전용문, 박현민 지음, 2026 ADsP 데이터분석 준전문가, 위키북스
내일배움캠프 교육 자료
'TIL > 내일배움캠프' 카테고리의 다른 글
| 파이썬 시작하기 Ⅰ (0) | 2026.04.30 |
|---|---|
| 쿼리로 데이터 전처리 (0) | 2026.04.28 |
| AI와 대화? 프롬프팅 (0) | 2026.04.26 |
| 나는 AI를 잘 사용하고 있을까? (1) | 2026.04.23 |
| GPT는 LLM? (1) | 2026.04.22 |