벌써 3일차가 밝았습니다! 아직도 3일차라고 해야하나요..? 근데 아직 이건 사전캠프라는 거.. 본캠프는 시작도 안했습니다!
벌써 지치면 안된다는 거~~~~ 오늘의 TIL 바로 가시죠!
1. 업무에 필요한 문자 포맷이 다를 때, SQL로 가공하기(REPLACE, SUBSTRINGS, CONTACT)
- 특정 문자를 다른 문자로 바꾸기
바뀐 상점 이름, 지역 이름 등을 한 번에 바꾸는 기능입니다!
함수명 : replace

예시) 식당 명의 'Blue Ribbon'을 'Pink Ribbon'으로 바꾸기
select restaurant_name "원래 상점명",
replace(restaurant_name, 'Blue' , 'Pink' ) "바뀐 상점명"
from food_orders
where restaurant_name like '%Blue Ribbon%'
- 원하는 문자만 남기기
전체 데이터가 아닌 특정 문자만 골라서 조회할 수 있는 기능입니다!
ex) 전체 주소에서 앞부분인 '시도'부분만 필요해요!
함수명 : substring(substr) → 둘다 사용 가능!

예시) 서울 음식점들의 주소를 전체가 아닌 '시도'만 나오도록 수정
select addr "원래 주소",
substr( addr, 1, 2 ) "시도" ≫ '주소의 첫번째부터 두글자를 가져온다'라는 뜻입니다!
from food_orders
where addr like '%서울특별시%'
- 여러 컬럼의 문자를 합치기
원하는 문자가 여러 컬럼에 있을 때, 하나로 합칠 수 있는 기능입니다!
함수명 : concat

붙일 수 있는 문자의 종류
- 컬럼 - 한글 - 영어 - 숫자 - 기타 특수문자
예시) 서울시에 있는 음식점은 '[서울] 음식점명'이라고 수정
select restaurant_name "원래 이름",
addr "원래 주소"
concat ( '[', substr(addr, 1, 2), ']', restaurant_name) "바뀐 이름"
from food_orders
where addr like '%서울%'
2. 문자 데이터를 바꾸고, GROUP BY 사용하기
문자 데이터 변경과 Group by절을 한 번에 사용하는 실습입니다!
예시) 서울지역의 음식 타입별 평균 음식 주문금액 구하기
select substr(addr, 1, 2) "시도",
cusine_type "음식 종류",
avg(price) "평균 금액"
from food_orders
where addr like '%서울%'
group by 1, 2 ≫첫번째, 두번째 컬럼이라는 뜻! 첫번째, 두번째 컬럼을 그대로 가져와도 무방!
3. 조건에 따라 포맷을 다르게 변경하기 (IF, CASE)
- 조건에 따라 다른 방법을 적용하고 싶을 때 - IF문 기초
IF문은 원하는 조건에 충족할 때 적용할 방법과 아닌 방법을 지정해 줄 수 있습니다!
함수명 : if

예시) 음식 타입을 'Korean'일 때는 '한식', 'Korean'이 아닌 경우에는 '기타'라고 지정
select restaurant_name "음식점 이름",
cuisine_type "원래 음식 타입",
if(cuisine_type='Korean', '한식', '기타') "음식 타입"
from food_orders
- 조건을 여러가지 지정하고 싶을 때 - Case문 기초
case문은 조건별로 지정해주기 때문에 if문을 여러번 쓴 효과를 낼 수 있습니다!
함수명 : case

예시) 음식 단가를 주문 수량이 1일 때는 음식가격, 주문수량이 2개 이상일 때는 음식가격/주문수량으로 지정
select order_id,
price,
quantity,
case when quantity=1 then price
when quantity>=2 then price/quantity end "음식 단가"
from food_orders
- 조건을 사용할 수 있는 경우 알아보기
새로운 카테고리 만들기
- 음식 타입과 같이 새로운 카테고리를 만들 수 있다.
- 고객들의 분류도 만들 수 있다. ex) 10대여성, 10대남성 ...
연산식을 적용할 조건 지정하기
- 수수료 계산할 때 현금, 카드사용 나누기
다른 문법 안에서 적용하기
if, case 문 안에 다른 문법이나 연산을 넣을 수도 있지만, 다른 문법 안에 조건문을 넣을 수도 있습니다
4. SQL로 간단한 User Segmentation 해보기
예시) 10세 이상, 30세 미만의 고객의 나이와 성별로 그룹 나누기 (이름도 같이 출력)
select name,
age,
gender,
case when ( age between 10 and 19 ) and gender='male' then "10대 남자"
when ( age between 10 and 19 ) and gender='female' then "10대 여자"
when ( age between 20 and 29 ) and gender='male' then "20대 남자"
when ( age between 20 and 29 ) and gender='female' then "20대 여자" end "그룹"
from customers
where age between 10 and 29
역시나 어렵네요.. 이번 3주차 강의는 시간 안에 끝내기는 실패... (3-7까지 있는데 3-5까지 성공..!)
강의 듣고 문제 풀어보고 다시 복습하고 이런 식으로 진행하다보니 어려워서 다시하고 다시 또 하고 반복하다보니 늦어졌어요..!
그래도 차근차근 하나씩 풀어가면서 제 것으로 만들어보겠습니다!!!
3주차의 나머지 강의는 6시 이후에 들으면서 추가하는 걸로!
5. 조건문으로 서로 다른 식을 적용한 수수료 구해보기
예시) 지역과 배달시간을 기반으로 배달수수료 구하기(식당이름, 주문번호 함께 출력)
(지역 : 서울, 기타 - 서울일 때는 수수료 계산 * 1.1, 기타일 때는 곱하는 값 없음
시간 : 25분, 30분 - 25분 초과하면 음식 가격의 5%, 30분 초과하면 음식 가격의 10%)

6. SQL문에 문제가 없는 것 같은데 왜 오류가 나나요? (Data Type 오류 해결하기)
- 에러메세지에 'Data Type' 단어가 뜨면서 실행되지 않을 때

이때 rating은 ABC라고 적혀있듯이 문자로 되어있기 때문에 평균을 구할 수 없어 오류가 발생한 것이에요!
따라서 문자, 숫자를 혼합하여 함수에 사용할 때에는 데이터 타입을 변경해주어야합니다!

6시 이후 강의 듣고 계속 문제를 반복해서 풀어보았는데요! 처음에는 어려웠지만 계속해서 반복하고 말로도 하면서 푸니까 이해가 되고 나름 잘 풀었던 것 같아요! 살짝 재미도 붙은 거 같고요!!!
결국 8시에 끝이 났지만...! 오늘도 수고 많았습니다-!😭😭

'2025 내일배움캠프 QAQC_2기' 카테고리의 다른 글
| 2025 내일배움캠프 QAQC_2기 6일차 (0) | 2025.05.08 |
|---|---|
| 2025 내일배움캠프 QAQC_2기 5일차 (0) | 2025.05.07 |
| 2025 내일배움캠프 QAQC_2기 4일차 (1) | 2025.05.02 |
| 2025 내일배움캠프 QAQC_2기 2일차 (0) | 2025.04.30 |
| 2025 내일배움캠프 QAQC_2기 시작! (0) | 2025.04.29 |