SQL 챕터 4 강의를 수강하며 복잡한 연산을 편리하게 하는 방법에 대해 배우는 시간을 가졌다. Query를 작성할 시 sub로 묶고, 각 Table에 있는 데이터를 join하여 간편하게 연산을 진행하는 법을 습득할 수 있는 시간이었다.
AI Literacy 1-5 실습을 통해 GPT에게 품질경영기사 암기노트 제작을 부탁해보았다.
■ Subquery
▶ Subquery가 필요한 경우
- 여러 번의 연산을 수행해야 하는 경우
- 조건문에 연산 결과를 사용해야 하는 경우
- 조건에 Query 결과를 사용하고 싶은 경우
select column1, special_column
from
( /* subquery */
select column1, column2 special_column
from table1
) a
▶ Subquery 문 안을 수정해서, 음식 준비시간이 25분보다 초과한 시간을 가져오기
select order_id, restaurant_name, if(over_time>0, over_time, 0) over_time
from
(
select order_id, restaurant_name, food_preparation_time-25 over_time
from food_orders
) a

▶ 음식점의 평균 단가별 segmentation 을 진행하고, 그룹에 따라 수수료 연산하기
select restaurant_name,
price_per_plate*ratio_of_add "수수료"
from
(
select restaurant_name,
case when price_per_plate<5000 then 0.005
when price_per_plate between 5000 and 19999 then 0.01
when price_per_plate between 20000 and 29999 then 0.02
else 0.03 end ratio_of_add,
price_per_plate
from
(
select restaurant_name, avg(price/quantity) price_per_plate
from food_orders
group by 1
) a
) b

▶ 음식점의 총 주문수량과 주문 금액을 연산하고, 주문 수량을 기반으로 수수료 할인율 구하기
( 할인조건 수량이 5개 이하 → 10%
수량이 15개 초과, 총 주문금액이 300000 이상 → 0.5%
이 외에는 일괄 1% )
select restaurant_name,
total_price,
total_quantity,
case when total_quantity<=5 then 0.1
when total_quantity>15 and total_price>=300000 then 0.005
else 0.01 end discount_rate
from
(
select restaurant_name,
sum(quantity) total_quantity,
sum(price) total_price
from food_orders
group by 1
) a

■ JOIN
| 함수 | 의미 |
| Left Join | A의 데이터와 A,B의 공통된 데이터를 합쳐 가져온다 |
| Inner Join | A,B의 공통된 데이터만 합쳐 가져온다 |

▶ left join
select *
from food_orders left join payments on food_orders.order_id=payments.order_id

▶ inner join
select *
from food_orders inner join payments on food_orders.order_id=payments.order_id

▶ 테이블에 별명 붙이고 각 테이블 컬럼 뽑아오기
select f.order_id,
f.customer_id,
f.restaurant_name,
f.price,
c.name,
c.age,
c.gender
from food_orders f left JOIN customers c on f.customer_id=c.customer_id

▶ 고객의 주문 식당 조회하기
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
//중복 없도록 결과 도출할 때는 distinct 사용하기

▶ 두 개의 테이블 정보를 이용하여 연산하기
select f.order_id,
f.restaurant_name,
f.price,
p.vat,
f.price*p.vat vat2
from food_orders f inner join payments p on f.order_id=p.order_id

▶ 50세 이상 고객의 연령에 따라 경로 할인율을 적용하고, 음식 타입별로 원래 가격과 할인 적용 가격 합을 구하기
select cuisine_type,
sum(price) 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 discounted_price desc
//subquery 작성 후 테이블 불러올 때는 cuisine_type 또는 a.cuisine_type 둘 다 가능
//order by 절에 discounted_price 또는 3 둘 다 가능

[실습] 식당별 평균 음식 주문 금액과 주문자의 평균 연령을 기반으로 Sefmentation 하기

SELECT restaurant_name,
case when avg_price<=5000 then 'price_group 1'
when avg_price between 5001 and 9999 then 'price_group 2'
when avg_price between 10000 and 29999 then 'price_group 3'
else 'price_group 4' end price_group,
case when avg_age<=29 then 'age_group 1'
when avg_age between 30 and 39 then 'age_group 2'
when avg_age between 40 and 49 then 'age_group 3'
else 'age_group 4' end age_group
FROM
(
SELECT f.restaurant_name,
avg(f.price) avg_price,
avg(c.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
// case when절
//case when price <=5000 then 'price_group1'
when price >5000 and price <=10000 then 'price_group2'
when price >10000 and price <=30000 then 'price_group3'
when price >30000 then 'price_group4' end price_group,
case when age <30 then 'age_group1'
when age between 30 and 39 then 'age_group2'
when age between 40 and 49 then 'age_group3'
else 'age_group4' end age_group 도 가능 //

오늘 배운 내용들은 앞서 배워왔던 함수와 SQL 개념들과 다르게 실무적인 부분에서 많이 유용하게 사용할 수 있을 것 같다고 느꼈다. 점점 복잡해지고 어려워지는 느낌이라 복습은 필수로 하여 내 것으로 만드는 시간이 필요한 것 같다.
실습 문제를 풀어가며 오류가 발생했고, 어느 부분에서 문제가 발생한 건지 잘 모르겠어서 GPT와 대화를 통해 오류를 찾아냈다. case함수 사용 중에 각 그룹별로 명칭을 지정해 줄 때 '(작은따옴표)를 작성하지 않아 오류가 발생함을 알게 되었고, 다음부터 Query를 작성할 때 '(작은따옴표) 를 빠트리진 않았는지 먼저 확인해 봐야겠다는 생각이 들었다.
■ AI Literacy 1-5 실습
▶ 품질경영기사 자격증 취득을 위한 암기노트 만들기
★ Prompt ★
품질경영기사 취득 방법에 대해 조사하여 말해라.
그 정보를 이용하여 암기노트를 만들어라.
{
"system": "너는 품질경영기사 문제를 제출하는 출제자이다."
"user": "위 자료를 바탕으로 암기노트를 만들어라."
"data": "1. 암기노트 형식은 '핵심 암기노트'이다'.",
"2. 요점에 대해 작성해라.",
"3. 내용을 요약하여 작성해라.",
"4. 각 과목에서 중요한 point가 무엇인지 도출해라.",
"5. 각 과목 공부 방법 팁을 말해라."
"6. 각 과목별로 표 형식으로 정리해라."
}
품질경영기사 핵심 암기노트 (과목별 표 정리)
1과목 : 실험계획법
| 실험계획 3원칙 | 반복·랜덤화·블록화 | 시험 최빈출 | 무조건 암기 |
| 요인(Factor) | 실험 조건 | 온도·압력 등 | 예시로 기억 |
| 수준(Level) | 요인의 단계 수 | 100도·200도 | 요인과 구분 |
| 분산분석(ANOVA) | 집단 차이 분석 | F값 클수록 영향 큼 | 계산 반복 |
| 직교배열 | 최소 실험 횟수 | L8, L16 자주 출제 | 표 형태 암기 |
대표 공식:

2과목 : 통계적 품질관리(SQC)
| X-bar 관리도 | 평균 관리 | 계량값 관리 | 관리도 비교 암기 |
| R 관리도 | 범위 관리 | 산포 관리 | 특징 비교 |
| p 관리도 | 불량률 관리 | 불량 비율 | np와 구분 |
| np 관리도 | 불량 개수 관리 | 표본수 일정 | p와 비교 |
| 공정능력지수(Cp) | 공정 수준 평가 | 1.33 이상 우수 | 공식 반복 |
| 샘플링 검사 | 품질 판정 | AQL·LTPD 중요 | 용어 암기 |
대표 공식:

3과목 : 생산시스템
| EOQ | 경제적 주문량 | 공식 빈출 | 계산 반복 |
| 개별생산 | 주문형 생산 | 다품종 소량 | 특징 비교 |
| 로트생산 | 묶음 생산 | 중간 형태 | 장단점 암기 |
| 연속생산 | 대량 생산 | 자동화 중심 | 사례 기억 |
| PERT | 일정 계획 | 네트워크 계산 | 문제 반복 |
| CPM | 공정 관리 | 임계경로 중요 | 계산 연습 |
대표 공식:

4과목 : 품질경영
| TQM | 전사적 품질관리 | 고객 중심 | 정의 암기 |
| ISO 9001 | 품질경영 국제표준 | 문서화 중요 | 특징 비교 |
| QC 7가지 도구 | 품질 개선 도구 | 그대로 출제 | 순서 암기 |
| 파레토도 | 핵심 원인 분석 | 80:20 법칙 | 그림 기억 |
| 특성요인도 | 원인 분석 | Fishbone | 형태 암기 |
| 관리도 | 공정 상태 관리 | 중심선 중요 | 관리도 비교 |
QC 7가지 도구:
- 파레토도
- 특성요인도
- 히스토그램
- 산점도
- 체크시트
- 관리도
- 층별
5과목 : 신뢰성관리
| MTBF | 평균고장간격 | 공식 최빈출 | 계산 반복 |
| 고장률 | 제품 고장 특성 | 욕조곡선 중요 | 그래프 암기 |
| 초기고장 | 초반 불량 | 감소형 | 특징 구분 |
| 우발고장 | 안정 상태 | 일정 고장률 | 시험 자주 출제 |
| 마모고장 | 노후 고장 | 증가형 | 욕조곡선 연결 |
| 신뢰도 함수 | 제품 신뢰도 | 지수함수 형태 | 공식 반복 |
대표 공식:

신뢰도 공식:

시험 직전 최종 암기표
| QC 7가지 도구 | ANOVA |
| 관리도 종류 | 공정능력지수 |
| Cp 공식 | EOQ |
| MTBF 공식 | PERT |
| ISO 특징 | 신뢰도 계산 |
합격 공부 전략 요약
| 1주차 | 이론 1회독 |
| 2주차 | 공식 암기 |
| 3주차 | 기출문제 반복 |
| 4주차 | 오답노트 정리 |
| 시험 직전 | 암기표 반복 |
출제자 관점 핵심 POINT
| ★★★★★ | 관리도 |
| ★★★★★ | 공정능력지수 |
| ★★★★★ | QC 7가지 도구 |
| ★★★★☆ | 실험계획법 |
| ★★★★☆ | 신뢰성 공식 |
| ★★★☆☆ | ISO·TQM |
GPT를 평소에 사용할 때는 단순하게 내가 궁금한 것을 제로형식으로 질문만 했었는데, 구조화하여 질문을 하니 답변의 퀄리티가 상승한 것을 느꼈다. 내가 요구하는 바를 구체적으로 제시하고 형식과 목적, 원하는 방향성을 함께 전달하니 더욱 체계적이고 정확한 결과를 얻을 수 있었다.
특히 단순 요약이 아닌 표 형식 정리, 핵심 포인트 도출, 공부 방법 제시 등 실제로 활용 가능한 수준의 답변을 받을 수 있어 AI를 효과적으로 활용하는 방법에 대해 다시 생각해 보게 되었다. 앞으로 AI를 사용할 때 원하는 바를 구체적으로 제시하여 원하는 답변을 얻을 수 있도록 프롬프트 방식으로 변경해 봐야겠다.
'내일배움 사전캠프' 카테고리의 다른 글
| [내일배움 사전캠프 8일차] 팀프로젝트 진행 및 SQL 마무리 (0) | 2026.05.08 |
|---|---|
| [내일배움 사전캠프 7일차]첫 팀 프로젝트 (0) | 2026.05.07 |
| [내일배움 사전캠프 4&5일차]퀘스트 2~4번 진행 (0) | 2026.05.04 |
| [내일배움 사전캠프 5일차]SQL로 조건문 작성하기 (0) | 2026.05.04 |
| [내일배움 사전캠프 연휴과제] 나의 QAQC 커리어 기획서 (0) | 2026.05.04 |