WHERE 조건절에 대해 알아보기
숫자 및 문자/날짜형 데이터 필터링
테이블명 다음에 WHERE를 적고 조건을 기재하면 됨!
숫자형 데이터 조건 주기
SELECT 열 이름1, 열 이름2 FROM 테이블명 WHERE 비교할 열 이름=숫자;
문자/날짜형 데이터 조건 주기
SELECT 열 이름1, 열 이름2 FROM 테이블명 WHERE 비교할 열 이름='문자';
1. 가입금액이 1백만원 이상인 고객들의 고객번호, 계약번호, 가입금액을 추출하려면?
SELECT ID, CNRT_NO, CNRT_AMT
FROM INS_INFO
WHERE CNRT_AMT >= 1000000;
2. 상품명이 '다이렉트자동차보험'인 고객들의 고객번호, 계약일, 상품명을 추출하고 고객번호는 오름차순으로 정렬하려면?
SELECT ID, CNRT_DT, PRDT_NM
FROM INS_INFO
WHERE PRDT_NM = '다이렉트자동차보험'
ORDER BY ID;
3. 상품 계약일이 2013년 04월 16일 이후인 고객들의 고객번호, 계약일, 상품명을 추출하고 고객번호는 오름차순으로 정렬해보자
SELECT ID, CNRT_DT, PRDT_NM
FROM INS_INFO
WHERE CNRT_DT >= '20130416'
ORDER BY 1;
ORDER BY 절은 문장의 끝에 사용해야 한다!
=> ORDER BY절을 문장의 앞에서 사용하면 오류가 발생함
비교/산술 연산자
비교연산자
SELECT 열 이름 FROM 테이블명 WHERE 비교할 열 이름 비교연산자 비교할 대상;
산술연산자 - SELECT문에서 사용되는 경우
SELECT 열 이름1, 열 이름2 산술연산자 열 이름3 AS 새로운 이름 FROM 테이블명;
산술연산자 - WHERE 조건절에서 사용되는 경우
SELECT 열 이름 FROM 테이블명 WHERE (열 이름1 산술연산자 열 이름2) 비교연산자 비교할 대상;
1. PURCHASE_TRAN 테이블에서 올해 구입금액이 1백만원 이상인 고객의 고객번호와 올해 구입금액을 나타내려면?
SELECT ID, PURCHASE_AMT
FROM PURCHASE_TRAN
WHERE PRUCHASE_AMT >= 1000000;
2. PURCHASE_TRAN 테이블에서 올해 구입건수가 작년도 구입건수보다 많은 고객들의 고객번호, 올해 구입건수, 작년도 구입건수를 나타내고 고객번호를 기준으로 오름차순 정렬하려면?
SELECT ID, PURCHASE_CNT, LAST_CNT
FROM PURCHASE_TRAN
WHERE PURCHASE_CNT > LAST_CNT
ORDER BY ID;
3. 올해 판매가격의 순 매출마진이 10%라고 가정하자. PURCHASE_TRAN 테이블에서 순이익의 별칭을 INCOME_AMT라고 사용하여 올해 고객별 순이익을 구하려면?
(순 매출마진은 '순이익 / 총 매출액')
SELECT ID, PURCHASE_AMT*0.1 AS INCOME_AMT
FROM PURCHASE_TRAN;
4. 올해 고객의 건당 구입금액을 구하고, 별칭은 TICKET_SIZE로 설정하려면?
SELECT ID, PURCHASE_AMT/PURCHASE_CNT
AS TICKET_SIZE
FROM PURCHASE_TRAN;
5. 보험원장 테이블(INS_INFO 테이블)에서 해지된 계약만 추출하여 고객번호, 계약번호 및 가입금액을 출력하려면?
SELECT ID, CNRT_NO, CNRT_AMT
FROM INS_INFO
WHERE CNCL_DT IS NOT NULL;
1. 산술연산자의 곱하기, 나누기는 더하기, 빼기보다 우선순위가 높다
2. NULL값인 행을 찾을 때는 IS NULL, NULL값이 아닌 행을 찾을 때는 IS NOT NULL을 사용한다
(이때 NULL은 데이터가 존재하지 않는다는 것을 의미하며, SPACE 혹은 숫자 0과는 다른 개념)
=> NULL을 사용할 때는 연산자 '='을 사용할 수 없다!
3. NULL값은 오름차순 혹은 내림차순으로 정렬 시 가장 큰 값으로 분류된다
NULL값의 처리
COALESCE 함수의 문법
COALESCE(EXPRESSION 1, EXPRESSION 2, ..., EXPRESSION N)
EXPRESSION 1이 NULL값이 아니면 EXPRESSION 1을 리턴하고, EXPRESSION 1이 NULL값이고 EXPRESSION2가 NULL 값이 아니면 EXPRESSION 2를 출력하게 된다!
COALESCE 함수는 NULL값을 0으로 치환할 때 많이 사용한다
=> NULL값이 포함된 사칙연산을 할 때 결과값은 NULL값이다 이를 해결하기 위해 결측치 처리(Missing value imputation)라는 작업을 해야 한다
(NULL값을 다른 값으로 치환할 때는 COALESCE 함수가 많이 사용됨)
ex. COALESCE(NULL, NULL, 'C') -> 'C'
(NULL 값을 제외한 가장 왼쪽에 남는 값)
DBMS마다 지원 여부의 차이가 있지만 NULL값을 처리할 수 있는 함수는
1. ZEROIFNULL(열 이름) : 해당 열에 NULL값이 포함되면 숫자 0으로 바꾸는 함수
2. NVL2(열 이름, 표현식1, 표현식2) : 해당 열이 NULL이면 '표현식 2'의 값을 나타내고 NULL이 아니면 '표현식1'의 값을 나타낸다
가 있다
'Database > SQL' 카테고리의 다른 글
텍스트 마이닝을 활용한 데이터 조건 주기 (1) | 2024.02.26 |
---|---|
논리연산자를 활용한 데이터 조건 주기 (0) | 2024.02.25 |
SELECT문에 추가적으로 필요한 키워드 (0) | 2024.02.22 |
SQL의 기초 (0) | 2024.02.21 |
SQL의 개요 (0) | 2024.02.21 |