06day. 텍스트 마이닝을 활용한 데이터 조건 주기
텍스트를 통해 데이터를 추출 및 분석하는 텍스트 마이닝(Text mining)과 필드를 하나로 결합하는 방법, 필드의 공백을 제거하는 방법에 대해
문자형 데이터로 입력되어 있는 테이블에서 데이터를 추출할 때는 LIKE 연산자를 사용하여 텍스트마이닝(Text mining)을 해야 한다.
뒤에 나오는 문자들을 알 수 없는 경우
SELECT 열이름 FROM 테이블명 WHERE 열이름 LIKE '찾고싶은 문자%' ;
앞에 나오는 문자들을 알 수 없는 경우
SELECT 열이름 FROM 테이블명 WHERE 열이름 LIKE '%찾고싶은 문자' ;
앞뒤에 나오는 문자들을 알 수 없는 경우
SELECT 열이름 FROM 테이블명 WHERE 열이름 LIKE '%찾고싶은 문자%' ;
뒤에 나오는 문자를 알 수 없는 경우
SELECT 열이름 FROM 테이블명 WHERE 열이름 LIKE '찾고싶은 문자_' ;
앞에 나오는 문자를 알 수 없는 경우
SELECT 열이름 FROM 테이블명 WHERE 열이름 LIKE '_찾고싶은 문자' ;
시작과 끝 문자만 아는 경우
SELECT 열이름 FROM 테이블명 WHERE 열이름 LIKE '첫글자%마지막글자' ;
특정 단어를 원하지 않는 경우
SELECT 열이름 FROM 테이블명 WHERE 열이름 NOT LIKE '%원하지 않는 문자%' ;
와일드카드: 문자열에서 특정한 문자 또는 문자들을 대체하기 위해 사용하는 문자를 의히
%: 모든 문자를 의미, 숫자 0 or 문자들을 대체하기 위해 사용
_ : 하나의 문자를 의미, 한개의 단어를 대체하기 위해 사용
CUSTOMERS 테이블을 사용하여 BER로 시작하는 도시에 거주하는 고객들을 찾아보자 (뒤에 나오는 문자들을 알 수 없는 경우)
SELECT *
FROM CUSTOMERS
WHERE CITY LIKE 'BER%' ;
CUSTOMERS 테이블을 사용하여 첫번째 문자는 알 수 없지만 이름이 AM으로 끝나는 고객들을 찾아보자(앞에 나오는 문자를 알 수 없는 경우)
SELECT *
FROM CUSTOMERS
WHERE NAME LIKE '_AM' ;
CUSTOMERS 테이블을 사용하여 도시 이름이 B로 시작해서 N으로 끝나는 곳에 거주하는 고객들을 찾아보자 (시작과 끝만 아는 경우)
SELECT *
FROM CUSTOMERS
WHERE CITY LIKE ' B%N' ;
여러 열을 하나로 결합하기: 결합연산자 || or +
보고서를 만들 때 여러 개로 나눠진 필드를 하나로 묶어서 표현하는 경우가 많다. 이때 SELECT문에 결합연산자 '||' 또는 '+'가 사용된다
여러 열을 하나로 결합하기
SELECT 열이름1 || 열이름2 FROM 테이블명 ;
문자 삽입하기
SELECT 열이름1 || '삽입하고 싶은 문자열' || 열이름2 FROM 테이블명 ;
CUSTOMERS 테이블을 사용하여 도시(나라)로 표현되도록 필드를 결합하고 ADDR이라는 별칭을 주자 (필드 결합하기)
SELECT ID, NAME, CITY, COUNTRY, CITY || '(' || COUNTRY || ')' AS ADDR # || 대신 +를 사용해도 됨
FROM CUSTOMERS ;
공백 제거하기
오른쪽 공백 제거하기
SELECT 열이름1, RTRIM(열이름2) FROM 테이블명 ;
왼쪽 공백 제거하기
SELECT 열이름1, LTRIM(열이름2) FROM 테이블명 ;
모든 공백 제거하기
SELECT 열이름1, TRIM(열이름2) FROM 테이블명 ;
CUSTOMERS 테이블을 사용하여 도시(나라)로 표현되도록 필드를 결합하고 ADDR이라는 별칭을 주자. 단, 나라에 공백이 없도록 표현하자 (공백 없애기)
SELECT ID, NAME, CITY, COUNTRY, TRIM(CITY) || '(' || TRIM(COUNTRY) || ')' AS ADDR # || 대신 +를 사용해도 됨
FROM CUSTOMERS ;
★김대리, 한국에 본사를 둔 A기업은 전 세계의 고객구매정보를 CUST_PERF 테이블에 적재해두지. 여기에서 ES라는 문자를 포함하는 도시 중 세 달 연속 구매 금액이 3백만원이 넘는 고객들을 나타내볼래?
SELECT *
FROM CUST_PERF
WHERE CITY LIKE '%ES%'
AND COALESCE(TOTAL_AMT_1, 0) > 3000000
AND COALESCE(TOTAL_AMT_2, 0) > 3000000
AND COALESCE(TOTAL_AMT_3, 0) > 3000000 # COALESCE 함수를 이용해서 NULL값을 0으로 치환
★김대리, 위의 고객에게 감사 DM을 발송할 것이네. 맨 처음 문구가 아래와 같다면 SQL 문장을 어떻게 만들 수 있을까?
DM_DE |
DEAR LEE, YOUR SEGMENT IS PRIMORITY IN OUR COMPANY. |
SELECT 'DEAR ' || TRIM(NAME) || ', YOUR SEGMENT IS ' || TRIM(SEG) || 'IN OUR COMPANY.'
댓글