내일배움캠프

[사전캠프] 데이터기반 QA/QC 부트캠프 3일차

min0jun 2026. 5. 3. 21:00

1. 오늘 학습 목표

- replace / substr / concat / group by 1,2 / if문 / case when 사용하는 법 배우기

- 프롬프트 기초-AI에게 잘 묻는 방법 배우기

 

2. 오늘 학습 한 내용

[SQL]

replace, substr, concat 이란?

  • replace - 바뀐 명칭 한번에 바꾸기
select restaurant_name "원래 상점명",
       replace(restaurant_name, 'Blue', 'Pink') "바뀐 상점명"
from food_orders
where restaurant_name like '%Blue Ribbon%'

replace 예시 결과

  • substr - 전체 데이터가 아닌 특정 문자만 필요할 때, 필요한 부분만 조회하기
select addr "원래 주소",
       substr(addr, 1, 2) "시도"
from food_orders
where addr like '%서울특별시%'

substr 예시 결과

  • concat - 원하는 문자가 여러 칼럼에 있을 때, 하나로 합치기
select restaurant_name "원래 이름",   
       addr "원래 주소",
       concat('[', substring(addr, 1, 2), '] ', restaurant_name) "바뀐 이름"
from food_orders
where addr like '%서울%'

concat 예시 결과

 

Tip. group by를 사용할 때, 문장 전체를 써도 되지만 1, 2 이런 식으로도 사용가능!

 

  • if - 조건을 지정해주는 가장 기초 문법
select restaurant_name,
       cuisine_type "원래 음식 타입",
       if(cuisine_type='Korean', '한식', '기타') "음식 타입"
from food_orders

if문 예시 결과

  • case - 한 문장에 여러번의 if문을 적용가능
select order_id,
       price,
       quantity,
       case when quantity=1 then price
            when quantity>=2 then price/quantity end "음식 단가"
from food_orders

case문 예시 결과

 

 

Final Tip. data type이 뜨며 에러가 뜨는 상황엔 문자와 숫자가 혼합되어 사용된 함수이기 때문이다. 이럴 땐 밑에처럼 변경!
--숫자로 변경
cast(if(rating='Not given', '1', rating) as decimal) 

--문자로 변경
concat(restaurant_name, '-', cast(order_id as char))

 

 

[AI 기초 배우기]

프롬프트란 무엇이고 왜 필요한가?

- 프롬프트란 LLM한테 입력하는 모든 문장

- 프롬프트는 LLM의 정체성, 주 임무, 사용자를 설정하기 위해 필요함

 

  • 프롬프트의 요소 : 지시, 입력 값, 문맥, 출력 지시자, 예시
  • 자유도(temperature) : LLM의 답변 자유도를 설정하는 값
    (자유도가 너무 높을 경우 환각이 발생, 너무 낮을 경우 추론 능력 저하)
  • 최대 토큰 수 : LLM이 소화할 수 있는 최대 토큰 수
    (문장을 자르는 기준)

프롬프트의 종류

  • Zero-Shot - 예시 없이 사전 학습된 일반적인 지식만으로 해결
    장점: 직관적이고 간편
    단점: 기존의 학습된 내용에만 오로지 의존
  • Few-Shot - 소수의 관련 예시를 포함시켜 성능을 향상시키니는 엔지니어링 기법
    장점: 예시를 포함하여 다음 출력 결과 예상 가능
    단점: 예시가 정확해야 하며 더 높은 정확도를 원할 경우, 더 많은 예시와 예외처리가 필요
  • Chain-of-Thought - 사고 과정을 단계별로 거쳐 추론하도록 유도하는 방식
    장점: 과정을 볼 수 있어 피드백하기 쉬움
    단점: 필요 없는 내용까지 나올 수 있고 후처리 가공이 필요할 수도 있음
  • Tree-of-Thoughts(생각의 나무) - 복잡한 문제를 나무처럼 여러 가지 가능성을 탐색하고 최적을 찾는 방식
    장점: 여러 해결책을 구할 수 있음
    단점: 제일 적절한 답변을 찾아야 하고 환각 검증과정이 필요
  • Structured - 구조를 갖춰 절차지향적으로 작성
    장점: LLM이 절차를 수행하는데 가장 직관적
    단점: 기계 입장에서 이해하도록 작성해야 함.
  • Generated Knowledge - 응답 정확도와 추론 능력을 향상시키기 위한 엔지니어링 기법
    장점: 정확도와 추론력 향상에 도움
    단점: 생성된 지식이 틀릴 경우 답이 더 크게 틀릴 위험

3. 오늘의 과제

  • AI 당일 과제 - 내직무와 연관지어 프롬프트 엔지니어링 하기
[역할]
너는 제조업 QC/QA 직무 면접 코치다.

[배경]
나는 기계자동차공학과 4학년을 졸업했고, 현재 빅데이터 기반 QC/QA 부트캠프를 듣고 있다.
수업에서는 Python, SQL, AI 리터러시, SQLD, ADSP를 배우고 있으며, 품질관리 직무를 준비하고 있다.

[질문]
“QC와 QA의 차이를 설명해보세요.”

[요구사항]
- 신입 지원자 수준으로 답변해줘.
- 기계자동차공학 전공과 데이터 분석 역량을 자연스럽게 연결해줘.
- 답변은 40초~1분 분량으로 작성해줘.
- 너무 외운 티가 나지 않게 자연스럽게 작성해줘.
- 마지막 문장은 직무 기여 의지로 마무리해줘.

[출력 형식]
1. 면접 답변
2. 답변 핵심 포인트
3. 추가로 받을 수 있는 꼬리질문 3개

 

 

  • 4) 이제 놀만큼 놀았으니 다시 공부해봅시다!

sparta_students 테이블에서 모든 학생의 이름(name)과 트랙(track)을 선택하는 쿼리를 작성해주세요!
정답:
SELECT name, track 
FROM sparta_students​
 
sparta_students 테이블에서 Unity 트랙 소속이 아닌 학생들을 선택하는 쿼리를 작성해주세요!
정답:
SELECT id, name, track, grade, enrollment_year 
FROM sparta_students 
WHERE track <> ‘Unity’​

 

sparta_students 테이블에서 입학년도(enrollment_year)가 2021년인 학생과 2023년인 학생을 선택하는 쿼리를 작성해주세요!
정답:
SELECT id, name, track, grade, enrollment_year 
FROM sparta_students 
WHERE enrollment_year IN (2021, 2023)​

 

sparta_students 테이블에서 Node.js 트랙 소속이고 학점이 ‘A’인 학생의 입학년도를 선택하는 쿼리를 작성해주세요!

정답:

SELECT enrollment_year 
FROM sparta_students 
WHERE track = ‘Node.js’ AND grade = ‘A’

 

  • 5) 공부하다보니 팀 프로젝트 시간이 왔어요!

team_projects 테이블에서 AWS 예산(aws_cost)이 40000 이상 들어간 프로젝트들의 이름을 선택하는 쿼리를 작성해주세요!
정답:
SELECT name 
FROM team_projects 
WHERE aws_cost >= 40000​
 
team_projects 테이블에서 2022년에 시작된 프로젝트를 선택하는 쿼리를 작성해주세요! 단, start_date < ‘2023-01-01’ 조건을 사용하지 말고 쿼리를 작성해주세요!
정답:
SELECT id, name, start_date, end_date, aws_cost 
FROM team_projects 
WHERE YEAR(start_date) = 2022​
 
team_projects 테이블에서 현재 진행중인 프로젝트를 선택하는 쿼리를 작성해주세요. 단, 지금 시점의 날짜를 하드코딩해서 쿼리하지 말아주세요!
정답:
SELECT id, name, start_date, end_date, aws_cost 
FROM team_projects 
WHERE CURDATE()  BETWEEN start_date AND end_date​
 
team_projects 테이블에서 각 프로젝트의 지속 기간을 일 수로 계산하는 쿼리를 작성해주세요!

정답:

SELECT name, DATEDIFF(end_date, start_date) AS working_days 
FROM team_projects
  • 6) 팀 프로젝트 열심히 했으니 다시 놀아볼까요?!

lol_users 테이블에서 각 유저의 레이팅(rating) 순위를 계산하는 쿼리를 작성해주세요! 전체 지역(region) 기준이고 순위는 레이팅이 높을수록 높아야해요. (e.g. rating 1400 유저의 순위 > rating 1350 유저의 순위)
정답:
SELECT name, rating, RANK() OVER (ORDER BY rating DESC) AS lol_rank 
FROM lol_users​
 
lol_users 테이블에서 가장 늦게 게임을 시작한(join_date) 유저의 이름을 선택하는 쿼리를 작성해주세요!
정답:
SELECT name 
FROM lol_users 
ORDER BY join_date DESC 
LIMIT 1​
 
lol_users 테이블에서 지역별로 레이팅이 높은 순으로 유저들을 정렬해서 나열하는 쿼리를 작성해주세요!
정답:
SELECT id, name, region, rating, join_date 
FROM lol_users 
ORDER BY region, rating DESC​
 
lol_users 테이블에서 지역별로 평균 레이팅을 계산하는 쿼리를 작성해주세요!

정답:

SELECT region, AVG(rating) AS avg_rating 
FROM lol_users 
GROUP BY region

 

 

 

나의 간단 소감

-슬슬 복잡해진다.. 정신 똑바로 차려야겠다...