SQL-3

Eddie·2025년 5월 1일
post-thumbnail

📘 SQL 3주차: 문자 가공, 조건 처리, 사용자 세그멘테이션

📌 학습 키워드

  • 문자열 가공: REPLACE, SUBSTRING, CONCAT
  • 조건별 연산: IF, CASE
  • 그룹 집계 및 조건부 포맷 변경
  • 사용자 세그멘테이션
  • 데이터 타입 에러 해결: CAST

✍️ 나만의 정리

1. 문자열 데이터 다루기

  • REPLACE: 기존 값을 새로운 문자로 바꾸기
  • SUBSTRING: 문자열의 일부분 추출하기
  • CONCAT: 여러 컬럼/문자 합치기

2. 조건에 따라 다르게 처리하기

  • IF: 조건 하나일 때 사용
  • CASE: 여러 조건이 있을 때 사용 (IF 중첩 대체)

3. 실전 실습 예시

  • 서울 음식점의 평균 가격 구하기
  • 이메일 도메인별 고객 분석
  • [지역] 음식점명 (음식종류) 포맷 만들기

4. 사용자 세그멘테이션

  • 10~29세 사용자 분류: 10대 남/여, 20대 남/여
  • 음식 종류 + 가격을 기반으로 음식점 분류

5. 조건에 따라 수수료 계산

  • 배달 시간 + 지역에 따른 수수료 계산
  • 주문 수량 + 요일에 따른 할증료 계산

6. 데이터 타입 오류 해결

  • CAST()를 사용하여 문자 → 숫자, 숫자 → 문자로 변환 필요

⚠️ 문제점과 에러

  • substring, avg, replace를 조합하면 종종 "data type error" 발생
  • 문자와 숫자를 같이 다룰 때 형변환 필요 (e.g. '123' + 10 → 오류)

🔁 시도

  • IF, CASE, CONCAT 조합 실습
  • 복잡한 문자열 조건도 SQL에서 가능할까?
  • 오류 원인을 로그 메시지로 확인하며 디버깅

✅ 해결 방법

  • cast(컬럼 as decimal) 또는 cast(컬럼 as char) 사용
  • 함수 안에 IF, CASE, SUBSTRING을 적절히 중첩해서 사용

🧠 새롭게 알게 된 점

  • Excel과 유사한 IF 기능이 SQL에도 있다는 점
  • CONCAT 안에 IF문을 넣는 방식이 매우 유용함
  • 주소에서 시/도를 추출하고 포맷을 통일하는 실전 스킬

🔧 새 기능/구문 요약

기능설명예시
REPLACE()문자열 변경replace(addr, '문곡리', '문가리')
SUBSTRING() / SUBSTR()문자열 자르기substr(addr, 1, 2)
CONCAT()문자열 합치기concat('[', 시도, '] ', 가게이름)
IF()조건문 (단일 조건)if(cuisine_type='Korean', '한식', '기타')
CASE조건문 (복수 조건)case when ... then ... else ... end
CAST()형변환cast(rating as decimal)

📅 다음 학습 계획

  • 4주차: 날짜 함수 활용하기, 시간 기준 분석
  • JOIN 구문과 윈도우 함수 학습 예정
  • SQL 결과를 시각화 도구로 연동하는 법도 곧 다뤄보기!

📅 숙제

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

profile
잘 부탁드립니다

0개의 댓글