📘 3주차에 배울 내용
💙 수업목표
- Query 결과를 업무에 바로 사용할 수 있도록 문자 (워딩) 를 다듬는다.
- 수치계산 및 문자를 다듬을 때, 조건별로 다르게 적용한다.
- 수치계산과 문자 연산이 되지 않는 경우를 배우고, 에러를 수정한다.
1. 문자열 가공하기 (REPLACE, SUBSTRING, CONCAT)
Query 결과를 바로 사용할 수 있도록 문자 데이터의 형태를 변경해보자
특정 문자를 다른 문자로 바꾸기 (REPLACE)
REPLACE(바꿀 컬럼, 현재 값, 바꿀 값);
SELECT restaurant_name "원래 상점명",
REPLACE(restaurant_name, 'Blue', 'Pink') "바뀐 상점명"
FROM food_orders
WHERE restaurant_name LIKE '%Blue Ribbon%';
원하는 문자만 남기기 (SUBSTRING)
SUBSTR(조회 할 컬럼, 시작 위치, 글자 수);
SELECT addr "원래 주소",
SUBSTR(addr, 1, 2) "시도"
FROM food_orders
WHERE addr LIKE '%서울특별시%';
여러 컬럼의 문자를 합치기 (CONCAT)
CONCAT(붙이고 싶은 값1, 붙이고 싶은 값2, 붙이고 싶은 값3, .....)
SELECT restaurant_name "원래 이름",
addr "원래 주소",
CONCAT('[', SUBSTRING(addr, 1, 2), '] ', restaurant_name) "바뀐 이름"
FROM food_orders
WHERE addr LIKE '%서울%';
2. 조건별 문자 가공하기 (IF, CASE)
조건에 따라 다른 방법을 적용하고 싶을 때 (IF 문)
IF(조건, 조건을 충족할 때, 조건을 충족하지 못할 때)
SELECT restaurant_name,
cuisine_type "원래 음식 타입",
IF(cuisine_type='Korean', '한식', '기타') "음식 타입"
FROM food_orders;
조건을 여러가지 지정하고 싶을 때 (CASE 문)
CASE WHEN 조건1 THEN 값(수식)1
WHEN 조건2 THEN 값(수식)2
ELSE 값(수식)3
END
SELECT restaurant_name,
cuisine_type AS "원래 음식 타입",
CASE WHEN (cuisine_type='Korean') THEN '한식'
ELSE '기타'
END AS " 음식 타입"
FROM food_orders;
3. Data Type 오류 해결하기
문자, 숫자를 혼합하여 함수에 사용 할 때에는 데이터 타입을 변경해주어야 한다.
--숫자로 변경
cast(if(rating='Not given', '1', rating) as decimal)
--문자로 변경
concat(restaurant_name, '-', cast(order_id as char))
4. 숙제
다음의 조건으로 배달시간이 늦었는지 판단하는 값을 만들어주세요.
- 주중 : 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;
'SQL > 강의' 카테고리의 다른 글
[📘 엑셀보다 쉽고 빠른 SQL] 5주차 (0) | 2025.03.21 |
---|---|
[📘 엑셀보다 쉽고 빠른 SQL] 4주차 (0) | 2025.03.21 |
[📘 엑셀보다 쉽고 빠른 SQL] 2주차 (0) | 2025.03.21 |
[📘 엑셀보다 쉽고 빠른 SQL] 1주차 (0) | 2025.03.20 |