728x90
NULL 처리함수
해당 컬림에서 NULL이 반환할 결과값을 넣어줄 수 있음
NVL(컬럼명, 반환할 결과값)
NUL2(컬럼명, 반환할 값1, 값2)
SELECT EMP_NAME 이름
, BONUS 보너스
, (SALARY + SALARY*NVL(BONUS, 0)) * 12 "연봉"
FROM EMPLOYEE;
SELECT EMP_NAME
, NVL(DEPT_CODE, '없음')
FROM EMPLOYEE;
-- 사원명, 부서코드 (부서코드가 있는 경우 '부서배치완료', 없는 경우 '없음)
SELECT EMP_NAME
, DEPT_CODE, NVL2(DEPT_CODE, '부서배치완료', '없음')
FROM DUAL;
728x90
NULLIF(비교대상1, 비교대상2)
두 개의 값이 동일할 경우 NULL 반환
두 개의 값이 동일하지 않을 경우 비교대상 1을 반환
SELECT NULLIF('123','123')
FROM DUAL;
-- NULL
SELECT NULLIF('123','213')
FROM DUAL;
-- 123
DECODE(비교대상(컬럼명/산술연산/함수), 조건, 결과)
-- 사번, 사원명, 주민번호, 성별자리 추출(3,4 도 있지만,,, 1,2만 있다고 가정...)
SELECT EMP_ID 사번
, EMP_NAME 이름
, DECODE(SUBSTR(EMP_NO,8,1),1,'남',2,'여') 성별
FROM EMPLOYEE;
CASE WHEN THEN 구문
CASE WHEN 조건식1 THEN 결과값1
WHEN 조건식2 THEN 결과값2
...
ELSE 결과값
END
-- 사번, 사원명, 주민번호, 성별 자리추출
SELECT EMP_ID 사원
, EMP_NAME 이름
, CASE WHEN SUBSTR(EMP_NO, 8, 1) = '1' THEN '남'
ELSE '여'
END "성별"
FROM EMPLOYEE;
그룹함수
1. SUM(컬럼) : 해당 컬럼값들의 총 합계를 반환해주는 함수
2. AVG(컬럼) : 해당 컬럼값들의 평균을 구해서 반환
3. MIN(컬럼) : 해당 컬럼값들에서 가장 작은 값을 반환
4. MAX(컬럼) : 해당 컬럼값들에서 가장 큰 값을 반환
5. COUNT : 조회된 행 개수를 세서 반환
COUNT(*) : 조회 결과에 해당하는 모든 행 개수를 다 세서 반환
COUNT(컬럼명) : NULL 이 아닌 행 개수만 세서 반환
COUNT(DISTINCT 컬럼명) : 중복값이 있을 경우 하나로만 COUNT, NULL 포함 X
728x90