[내일배움캠프] QA/QC_6기 - 사전캠프 4일차
- TIL
- SQL로 데이터 포맷 변경 및 조건 걸기
- AI 프롬프트 엔지니어링
- To-Do List
- SQL 강의 수강 (Chap3 전체)
- AI Literacy 강의 수강 (Chap1-4)
- SQL 및 AI Literacy 강의 과제 수행
SQL
업무 필요한 문자 포맷이 다를 때, SQL로 가공하기
- 특정 문자를 다른 문자로 바꾸기
- REPLACE : 칼럼의 특정 값을 변경
replace(바꿀 칼럼, 현재 값, 바꿀 값)
- REPLACE : 칼럼의 특정 값을 변경
- 원하는 문자만 남기기
- SUBSTR (또는 SUBSTRING) : 칼럼에서 특정 문자만 골라서 조회
substr(조회 할 칼럼, 시작 글자 위치, 글자 수)
- SUBSTR (또는 SUBSTRING) : 칼럼에서 특정 문자만 골라서 조회
- 여러 칼럼의 문자를 합치기
- CONCAT : 여러 칼럼의 값을 하나로 합칠 수 있는 기능
concat(붙이고 싶은 값1, 붙이고 싶은 값2, 붙이고 싶은 값3, … ) - 붙일 수 있는 문자 종류 : 칼럼, 한글, 영어, 숫자, 기타 특수문자
- CONCAT : 여러 칼럼의 값을 하나로 합칠 수 있는 기능
조건에 따라 포맷을 다르게 변경해야 한다면
- 조건에 따라 다른 방법을 적용하고 싶을 때 - IF 문 기초
- IF : 원하는 조건을 충족할 때 적용할 방법과 충족하지 않을 때 적용할 방법을 지정
if(조건, 조건을 충족할 때, 조건을 충족하지 않을 때)
- IF : 원하는 조건을 충족할 때 적용할 방법과 충족하지 않을 때 적용할 방법을 지정
- 조건을 여러가지 지정하고 싶을 때 - CASE 문 기초
- CASE : 각 조건별로 적용 할 값을 지정 가능 (IF 문을 여러번 사용한 효과)
case when 조건1 then 값1(문자, 데이터 등) → 1번 조건
when 조건2 then 값2 → 2번 조건 (그 이상도 가능)
else 값3 → 지정한 조건들 외의 경우 (나머지)
end → CASE 문의 끝을 지정
- CASE : 각 조건별로 적용 할 값을 지정 가능 (IF 문을 여러번 사용한 효과)
예제
- 음식 단가, 음식 종류 별 음식점의 그룹 나누기 (이름도 같이 출력)
selectrestaurant_name, price/quantity "단가", cuisine_type, order_id,
case when (price/quantity <5000) and cuisine_type='Korean' then '한식1'
when (price/quantity between 5000 and 15000) and cuisine_type='Korean' then '한식2'
when (price/quantity > 15000) and cuisine_type='Korean' then '한식3'
when (price/quantity <5000) and cuisine_type in ('Japanese', 'Chinese', 'Thai', 'Vietnamese', 'Indian') then '아시아식1'
when (price/quantity between 5000 and 15000) and cuisine_type in ('Japanese', 'Chinese', 'Thai', 'Vietnamese', 'Indian') then '아시아식2'
when (price/quantity > 15000) and cuisine_type in ('Japanese', 'Chinese', 'Thai', 'Vietnamese', 'Indian') then '아시아식3'
when (price/quantity <5000) and cuisine_type not in ('Korean', 'Japanese', 'Chinese', 'Thai', 'Vietnamese', 'Indian') then '기타1'
when (price/quantity between 5000 and 15000) and cuisine_type not in ('Korean', 'Japanese', 'Chinese', 'Thai', 'Vietnamese', 'Indian') then '기타2'
when (price/quantity > 15000) and cuisine_type not in ('Korean', 'Japanese', 'Chinese', 'Thai', 'Vietnamese', 'Indian') then '기타3' end "식당 그룹"
from food_orders
실습 예제
- 배달 시간이 늦었는지 판단하는 값을 만들기
- 조건 : 주중 25분 이상, 주말 30분 이상
select order_id, restaurant_name, day_of_the_week, delivery_time,
case when day_of_the_week='weekday' and delivery_time>=25 then "Late"
when day_of_the_week='weekend' and delivery_time>=30 then "Late"
else "On-time" end "지연 여부"
from food_orders
- 조건 : 주중 25분 이상, 주말 30분 이상
과제
- sparta_students 테이블에서 모든 학생의 이름(name)과 트랙(track)을 선택하는 쿼리를 작성해주세요.
select name, track
from sparta_students - sparta_students 테이블에서 Unity 트랙 소속이 아닌 학생들을 선택하는 쿼리를 작성해주세요.
select *
from sparta_students
where track<>'Unity' - sparta_students 테이블에서 입학년도(enrollment_year)가 2021년인 학생과 2023년인 학생을 선택하는 쿼리를 작성해 주세요.
select *
from sparta_students
where enrollment_year in(2021, 2023) - sparta_students 테이블에서 Node.js 트랙 소속이고 학점이 'A'인 학생의 입학년도를 선택하는 쿼리를 작성해주세요.
select *
from sparta_students
where track='Node.js' and grade='A' - team_projects 테이블에서 AWS 예산(aws_cost)이 40000 이상 들어간 프로젝트들의 이름을 선택하는 쿼리를 작성해주세요.
select name
from team_projects
where aws_cost>=40000 - team_projects 테이블에서 2022년에 시작된 프로젝트를 선택하는 쿼리를 작성해주세요. 단, start_date < '2023-01-01' 조건을 사용하지 말고 쿼리를 작성해주세요.
select *
from team_projects
where start_date in(2022) - team_projects 테이블에서 현재 진행중인 프로젝트를 선택하는 쿼리를 작성해주세요. 단, 지금 시점의 날짜를 하드코딩해서 쿼리하지 말아주세요.
select *
from team_projects
where curdate() between start_date and end_date - team_projects 테이블에서 각 프로젝트의 지속 기간을 일 수로 계산하는 쿼리를 작성해주세요.
select name, datediff(end_date, start_date) working_days
from team_projects - lol_users 테이블에서 각 유저의 레이팅(rating) 순위를 계산하는 쿼리를 작성해주세요. 전체 지역(region) 기준이고 순위는 레이팅이 높을수록 높아야해요. (e.g. rating 1400 유저의 순위 > rating 1350 유저의 순위)
select name, rating, rank() over (order by rating desc)
from lol_users - lol_users 테이블에서 가장 늦게 게임을 시작한(join_date) 유저의 이름을 선택하는 쿼리를 작성해주세요.
select name
from lol_users
order by join_date desc
limit 1 - lol_users 테이블에서 지역별로 레이팅이 높은 순으로 유저들을 정렬해서 나열하는 쿼리를 작성해주세요.
select name
from lol_users
order by region, rating desc - lol_users 테이블에서 지역별로 평균 레이팅을 계산하는 쿼리를 작성해주세요.
select region, avg(rating) "평균 레이팅"
from lol_users
group by region
AI Literacy
프롬프트 기초 - AI에게 잘 묻는 법
- 프롬프트란?
LLM은 사람의 언어를 인식하고 답변하는 AI
LLM에게 입력하는 모든 문장, 지시문 = '프롬프트' - 프롬프트의 요소
- Instruction (지시) : LLM이 수행해야 하는 명령
- Input Data (입력 값) : LLM이 받아들일 값 (그림, 글 등)
- Context (문맥) : 추가적인 정보, 어조, 말투
- Output Indicator (출력 지시자) : 출력 틀, 양식
- Example (예시) : 사용자가 원하는 추가적인 예시
- 항상 이 구성 요소가 적용되진 않는다.
- 프롬프트 요소와 매개변수 요소는 다르다.
- 자유도(temperature) : LLM의 답변 자유도를 설정하는 값
- 자유도가 너무 높을 경우 → 환각(holluciation) 발생 가능성 ↑
- 자유도가 너무 낮을 경우 → 추론 능력 ↓
- 간접적으로 이와 같은 현상이 발생할 수 있음
- 최대 토큰(token) 수 : LLM이 소화할 수 있는 최대 토큰 수
- 토큰 : LLM이 문장, 단어, 글자, 문장 부호 등을 의미 단위로 쪼갠 언어 처리의 가장 작은 조각
- 토큰 수 ↑ → GPU 부담 ↑, 토큰 수 ↓ → 답변 가능한 문장 길이 ↓
- 자유도(temperature) : LLM의 답변 자유도를 설정하는 값
프롬프트 엔지니어링 (Prompt Engineering)
- Zero-Shot Prompting : 모델에 예시 없이 원하는 작업을 지시하여, 사전 학습된 일반적인 지식만으로 문제를 해결하는 방법
- ex) 지시문 : 1 더하기 1은?
- 장점 : 별도의 학습을 수행하지 않고 지시문만 명료하게 작성하면 되므로 사용자 입장에서 직관적이고 간편
- 단점 : 오로지 LLM의 기존 학습 내용에 의존
- Few-Shot Prompting : 프롬프트 내에 소수의 관련 예시를 포함시켜서 AI 모델의 성능을 향상시키는 기법
- ex) 지시문 : [예시1] 원문 : "오늘은 금요일이다." / 출력 : "내일은 토요일이다"
원문 : "오늘은 수요일이다." / 출력 : "내일은 목요일이다." - 장점 : 예시를 포함하여 다음 출력 결과를 예상 가능
- 단점 : 예시가 명확해야하며 정확한 답변을 원할수록 더 많은 예시와 예외 처리가 필요
- ex) 지시문 : [예시1] 원문 : "오늘은 금요일이다." / 출력 : "내일은 토요일이다"
- Chain-of-Thought Prompting (CoT, 생각의 사슬) : 복잡한 문제를 해결할 때, 정답을 바로 제시하는 대신 사고 과정을 단계별로 거쳐 추론하도록 유도하는 방식
- ex) 지시문 : 아래 질문에 대해 생각의 흐름을 단계별로 적은 후 결론을 말하라.
"연필 한 다스는 12개의 연필로 구성되어 있다. 그렇다면 연필 4 다스는 몇 개의 연필인가?" - 장점 : LLM의 추론 과정을 보고 만약 잘못된 부분이 있으면 피드백하기 용이함
- 단점 : 필요 없는 내용까지 답변이 방대하질 수 있으며, 답변의 후처리 가공을 필요로 할 수 있음
- ex) 지시문 : 아래 질문에 대해 생각의 흐름을 단계별로 적은 후 결론을 말하라.
- Tree of Thoughts (ToT, 생각의 나무) : 복잡한 문제를 해결하는 과정을 나무와 같이 여러 가지 가능성으로 가지를 뻗듯이 탐색하고 최적의 경로를 찾는 방식
- 답변의 수를 제한하는 등 추가적인 조건을 제시하는 것이 좋음
- ex) 지시문 : 다음 문제를 tree of thoughts 방식으로 해결하라.
- 장점 : 여러 해결책을 구할 수 있음
- 단점 : 어느 답이 가장 적절한지 환각은 없는지 검증을 해야하거나 검증이 어려움
- Structured Prompting (구조화 지시) : 구조를 갖춰서 절차지향적으로 프롬프트를 작성하는 방법
- ex) 지시문 : 다음 글을 아래 구조에 맞춰 요약하라.
[요약]
- 핵심 문장 :
- 주요 포인트 :
- 결론 :
글 : "기원전 4025년 메소포타미아... (중략) ..." - 장점 : LLM이 절차를 수행하는데 가장 직관적인 방법
- 단점 : 사람이 이해하는데 초점을 두기보다 기계의 입장에서 프롬프트를 이해하도록 작성하는데 초점을 둬야함
- ex) 지시문 : 다음 글을 아래 구조에 맞춰 요약하라.
- Generated Knowledge Prompting (지식 생성) : 응답 정확도와 추론 능력을 향상시키기 위한 프롬프트 엔지니어링 기법
- LLM의 추론 과정을 한 번 더 점검 하도록 도울 수 있음 (few-shot 기법도 함께 사용하면 좋음)
- ex) 지시문 : 먼저 '중학생 수준의 기후지식'을 5개 생성하라. 그 후 그 지식을 사용해 아래 질문에 답하라.
[질문] "지구 온난화가 왜 극지방의 빙하 감소로 이어지는가?" - 장점 : 모델이 지식을 정리하며 사고 기반을 만들기 때문에 정확도와 추론력 향상에 도움
- 단점 : 생성된 지식이 부정확할 경우 잘못된 정보를 기반으로 답이 더 크게 틀릴 수 있는 위험이 존재
Quiz! 다음 중 생성형 LLM의 추론 능력을 이용하는 프롬프트 기법은? (4번)
- Structured prompt → 구조화 기반의 프롬프트 기법
- Grok → LLM의 이름
- RAG → Retrieval-Augment Generation (검색 증강 생성)
- CoT
Quiz! 다음 정의를 말해주세요.
- (단답형) 구조화된 프롬프트 엔지니어링 방법은? : Structured prompt
- (단답형) LLM이 문장을 나누는 기본 단위는? : 토큰
- (서술형) 프롬프트 엔지니어링이란?
LLM이 인간의 언어를 더 잘 인식하도록 지시문을 작성하여 사용자가 원하는 답변을 얻을 수 있도록 하는 방법
LLM 모델의 정체성을 부여하고 사용자의 적합성을 성숙시키는 기법 (강사님 답변)
당일 과제. 오늘 배운 프롬프트 기법들의 예시들을 내 직무 관련 업무와 연관 지어 TIL에 작성해봅시다.
- 내 지시문
너는 반도체 품질관리 직무 경력 10년의 베테랑이야.
아래 상황에 대한 답변을 생각의 흐름을 단계 별로 양식에 맞춰 작성하고 결론을 알려줘.
상황 : "만약 반도체 패키징 공정에서 지속적으로 동일한 불량이 검출된다면 이를 검출하고 예방하기 위해서는 어떻게 해야 할까?"
[양식]
1. 문제 상황
2. 문제 식별 및 과정
3. 문제 해결 방법 및 재발 방지 대책
4. 결론 - GPT 답변

출처
내일배움캠프 교육 자료
'TIL > 내일배움캠프' 카테고리의 다른 글
| 쿼리로 데이터베이스 다루기 (0) | 2026.04.27 |
|---|---|
| AI와 대화? 프롬프팅 (0) | 2026.04.26 |
| GPT는 LLM? (1) | 2026.04.22 |
| AI란 무엇인가? (0) | 2026.04.21 |
| JD 분석이란? (1) | 2026.04.21 |