본문 바로가기

TIL

[231205] SQL: REPLACE, SUBSTRING, CONCAT, IF/CASE, CAST

* 수강 강의명: 엑셀보다 쉽고 빠른 SQL - 3주차 

 [요약] 

1. 문자열 가공하는 법  (REPLACE, SUBSTRING, CONCAT + CAST)

-  REPLACE : 특정 문자를 다른 것으로 바꿀 수 있는 명령어

REPLACE(변경할 칼럼, 현재값, 변경값) 

└ ex) 식당명에 blue 표기된 값을 red로 바꾸고 싶다면, REPLACE(restaurant_name, 'Blue', 'Red')

 

- SUBSTRING : 원하는 문자만 남기는 명령어

substr(변경할 칼럼, 시작 위치, 남기고 싶은 음절수) * substring 으로 표기해도 무방

└ ex) 주소에서 '서울' '경기' 등 앞음절 2개만 남기고 싶다면, substr(addr, 1, 2)

 

- CONCAT : 여러 칼럼을 하나로 합치는 명령어 

CONCAT(붙이고 싶은 값1, 붙이고 싶은 값2, 붙이고 싶은 값3 .... ) * 칼럼, 한글, 영어, 숫자, 특수문자 기입 가능 

└ ex) concat('[', substring(addr, 1, 2), '] ', restaurant_name)

 

[+] CAST : 데이터 타입을 문자 > 숫자, 숫자 > 문자로 변경할 때 사용하는 명령어

└ 숫자로 변경:  CAST (칼럼명 OR 조건절 as decimal) 

└ 문자로 변경:  CAST (칼럼명 OR 조건절 as char) 

(cf) 각 칼럼의 데이터 타입은 하단 노란색 영역과 같이 표기됨

 

2. IF, CASE 절

- IF : 원하는 조건을 지정해주는 명령어

if(원하는 조건, 조건 충족 시 기입될 값, 조건 미충족시 기입될 값)

└ ex)  if(cuisine_type='Korean', '한식', '기타') 

 

- CASE : 다수의 조건을 지정할 때 사용하는 명령어. if를 여러 번 쓴 것과 동일한 효과 * if(조건1, 값1, if(조건2, 값2, 값3))

case when 조건1 then 값(수식)1
               when 조건2 then 값(수식)2
              else 값(수식)3
        end

 └ ex) case when quantity=1 then price
                      when quantity>=2 then price/quantity end 

 

3. 실습

- 다수의 조건문을 이용해 새로운 카테고리 만들기 - User Segmentation (ex. 성별 연령별 그룹 나누기 등)

- 조건문을 이용해 다른 수식을 적용 (ex. 지역 및 배달 시간에 따른 수수료 계산 등)

 

[정리]

1) 어떤 문제가 있었나 

조건문과 수식을 활용하여 수수료를 계산하는 실습에서 중복되는 수수료를 곱하는 방법이 헷갈림 

 

2) 내가 시도해본 건 무엇인가

결과 값을 통해 필요한 수식을 정리하고 해답에서 대략적인 쿼리 작성 흐름을 파악한 후,  처음부터 혼자 쿼리를 다시 작성해봄

 

3) 어떻게 해결했나

해답을 통해 case when 구분에 if 절을 추가할 수 있다는 사실을 알았고,

맨처음 작성하던 case when 구문만 활용한 쿼리와

case when + if 를 접목한 쿼리를 모두 적어서 결과 값을 비교하며 조건절의 개념을 다시 잡음 

 

4) 무엇을 새롭게 알았나

 - 조건절을 길게 나열하지 않고도, case when 과 if절을 적절히 조합해 간결한 쿼리 작성이 가능함 

- REPLACE, CONCAT, CAST 개념을 처음 접해 추가 복습이 필요함