Heestory

CASE WHEN 조건 카운트, SUBSTRING_INDEX 본문

개발(0)/회사 기록

CASE WHEN 조건 카운트, SUBSTRING_INDEX

까만밀가루 2023. 3. 2. 11:19

요청1

열람과 다운로드 횟수를 나눠달라는 요청을 받았다.

열람 CASE별 다운로드 CASE별 조건별 다운로드로 구분하고 컬럼을 추가

COUNT(CASE WHEN CAOT_WK = 'P' THEN 1 ELSE NULL END) AS CNT
  • CAOT_WK가 'P'라면 1을 반환, 아니라면 NULL을 반환
COUNT(CASE WHEN CAOT_WK IN ('F','E') THEN 1 ELSE NULL END) AS DOWN_CNT
  • CASE가 두가지 조건일 떄는 IN으로 COUNT

https://velog.io/@ann0905/DECODE%EC%99%80-CASE-WHEN%EC%9D%84-%ED%99%9C%EC%9A%A9%ED%95%9C-%EC%A1%B0%EA%B1%B4-%EC%B9%B4%EC%9A%B4%ED%8A%B8

 

DECODE와 CASE WHEN을 활용한 조건 카운트

회원 수 통계 배치를 개발하면서, 조건에 해당하는 값을 추출하는 것이 가장 어려웠다. 예를 들면, 정상/휴면 회원 수 혹은 마케팅 알림 설정을 동의/미동의한 회원 수 등을 구하는 것이다. 단일

velog.io

 

 

요청2

한 컬럼에 필요한 정보가 3개가 들어있어 문자열를 구분해야한다는 요청이 들어왔다.

→ SUBSTRING_INDEX 이용

  • SUBSTRING
SUBSTRING(문자열, 시작 위치)
SUBSTRING(문자열, 시작 위치, 시작 위치부터 가져올 문자수)
  • SUBSTRING_INDEX
SUBSTRING_INDEX(문자열, 구분자, 구분자 Index)

: 구분자 기준으로 인덱스까지 문자열 추출

REPLACE(SUBSTRING_INDEX(URL,'[',1),'[','') AS A
SUBSTRING_INDEX(SUBSTRING_INDEX(URL,',',1),'[',-1) AS B
SUBSTRING_INDEX(SUBSTRING_INDEX(URL,']',1),',',-1) AS C
  1. URL중 첫번쨰 [ 까지 추출 후 [를 ''로 대체
  2. URL중 첫번쨰 ,를 추출 한 후 첫번쨰 [까지 추출
  3. URL중 첫번쨰 ]를 추출하 ,까지 추출