Marketing Study

SQL 공부 (3)

도망가자산으로 2022. 4. 2. 16:51
반응형

Where 조건절을 통한 데이터 필터링

 

- 숫자형 데이터 조건 주기

= Select 열 이름1, 열 이름2 From 테이블명 Where 비교할 열 이름 = 숫자;

 

- 문자/날짜형 데이터 조건 주기

= Select 열 이름1, 열 이름2 From 테이블명 Where 비교할 열 이름 = '문자';

 

* Where 조건절에 숫자에 대한 조건을 줄 때는 작은따옴표(' ')를 사용하지 않고 숫자를 나타내면 되지만,

문자에 대한 조건을 줄 때는 작은따옴표(' ')를 사용해야 한다.

 

Ex 1) 가입금액이 1백만원 이상인 고객들의 고객번호, 계약번호, 가입금액을 추출해보자

= Select ID, CNRT_NO, CNRT_AMT From INS_INFO Where CNRT_AMT >= 1000000;

 

Ex 2) 상품명이 '다이렉트자동차보험'인 고객들의 고객번호, 계약일, 상품명을 추출하고 고객번호는 오름차순으로 정렬해보자

= Select ID, CNRT_DT, PRDT_NM From INS_INFO Where PRDT_NM = '다이렉트자동차보험' Order by ID;

 

Ex 3) 상품 계약일이 2013년 04월 16일 이후인 고개들의 고객번호, 계약일, 상품명을 추출하고 고객번호는 오름차순으로 정력해보자.

= Select ID, CNRT_DT, PRDT_NM From INS_INFO Where CNRT_DT >= 20120416 Order by ID;

Q : 계약일에 2012-04-16 이렇게 되어있는데, Where 조건에는 20120416 이렇게 쓰는 걸까??

 

* SELECT > FROM > WHERE > ORDER BY 순으로 ORDER BY절은 문장의 끝에 사용한다.

 


 

- 비교연산자

= Select 열 이름 From 테이블명 Where 비교할 열 이름 비교연산자 비교할 대상;

 

비교연산자 설명
A = B A와 B가 같다.
A <> B / A != B / A ^=B A와 B가 같지 않다.
A < B A가 B보다 작다. = A가 B 미만이다.
A <= B A가 B보다 작거나 같다. = A가 B 이하이다.
A > B A가 B보다 크다. = A가 B 초과이다.
A >= B A가 B보다 크거나 같다. = A가 B 이상이다.
BETWEEN A AND B 지정된 두 값 사이에 있는지 확인하는 경우 사용한다.
IS NULL NULL 값을 가진 여을 검색하는 경우 사용한다.
IS NOT NULL NULL 값이 아닌 열을 검색하는 경우 사용한다.

 

- 산술 연산자

Select문에서 사용되는 경우

= Select 열 이름1, 열 이름2 산술연산자 열 이름3 As 새로운 이름 From 테이블명;

* Select 문에서 사용하는 산술연자는 새로운 별칭을 주는 AS와 같이 사용되는 경우가 많다.

 

Where 조건절에서 사용되는 경우

= Select 열 이름 From 테이블명 Where (열 이름1 산술연산자 열 이름2) 비교 연산자 비교할 대상;

* 산술연산자(+, -, /, *) 곱하기, 나누기는 더하기, 빼기 보다 우선이라는 것을 명심하자!

같은 우선순위일 경우, 좌측에서 우측순으로 연산이 진행되고 괄호를 사용하면 우선순위가 최우선이 된다.

 

Ex 1) PURCHASE_TRAN 테이블에서 올해 구입금액이 1백만원 이상인 고객의 고객번호와 올해 구입금액을 나타내보자

= Select ID, PURCHASE_AMT From PURCHASE_TRAN Where PURCHASE_AMT >= 1000000;

 

Ex 2) PURCHASE_TRAN 테이블에서 작년 구입금액이 1백만원 이상 5천만원 이하인 고객의 고객번호와 작년 구입금액을 나타내보자

= Select ID, LAST_AMT From PURCHASE_TRAN Where LAST_AMT BEETWEN 1000000 AND 50000000;

 

Ex 3) PURCHASE_TRAN 테이블에서 올해 구입건수가 작년도 구입건수보다 많은 고객들의 고객번호, 올해 구입건수, 작년도 구입건수를 나타내고 고객번호를 기준으로 오름차순 정렬해보자

= Select ID, PURCHASE_CNT ,LAST_CNT From PURCHASE_TRAN Where PURCHASE_CNT > LAST_CNT Order by ID;

 

Ex 4) 올해 판매가격의 순 매출마진이 10%라고 가정하자. PURCHASE_TRAN 테이블에서 순이익의 별칭을 INCOME_AMT라고 사용하여 올해 고객별 순이익을 구해보자

= Select ID, PURCHASE_AMT*0.1 AS INCOME_AMT  From PURCHASE_TRAN;

* 순 매출마진(Net Sales Margin)은 '순이익/총 매출액'이다.

 

Ex 5) 올해 고객의 건당 구입금액을 구하고, 별칭은 TICKET_SIZE로 설정해보자

= Select PURCHASE_AMT/PURCHASE_CNT AS TICKET_SIZE From PURCHASE_TRAN;

 

Ex 6) 보험원장 테이블(INS_INFO 테이블)에서 실제 살아있는 계약만 추출하여 고객번호, 계약번호 및 가입금액을 추출해보자.

Select ID, CNRT_NO, CNRT_AMT From INS_INFO Where CNCL_DT IS NULL;

 

Ex 7) 보험원장 테이블(INS INFO 테이블)에서 해지된 계약만추출하여 고객번호, 계약번호 및 가입금액을 출력해보자.

= Select ID, CNRT_NO, CNRT_AMT From INS_INFO Where CNCL_DT IS NOT NULL;

 

* 인당 구매금액, 인당 가입금액 : 티켓사이즈(TICKET SIZE)

* NULL값인 행을 찾을 때는 IS NULL, NULL값이 아닌 행을 찾을 때는 IN NOT NULL

NULL 값은 데이터가 존재하지 않는 다는 것을 의미하며, '=' 연산자를 사용할 수 없다. 사용하면 에러남

* NULL값은 오름차순 혹은 내림차순으로 정렬 시 가장 큰 값으로 분류된다.

 

- COALESCE 함수의 문법

= COALESCE (EXPRESSION 1, EXPRESSION 2, ... , EXPRESSION N)

 

이 함수는 문법에서 정의된 열 중 NULL이 아닌 첫 번째 값을 화면에 출력하는 역할을 한다. 이 함수는 NULL값을 제외한 가장 왼쪽에 남는 값이라고 생각하면 이해하기 쉽다. COALESCE('A', 'B')인 경우, NULL값이 없으므로 'A'가 리턴될 것이고 COALESCE(NULL, 'B', 'C')인 경우 'B'가 리턴될 것이다.

 

통계학에서는NULL값을 결측치(Missing Value)라고도 부른다. 

반응형