ORACLE SQL

SQL_함수 모음 NULL 처리 함수, 선택 함수

최종군 2024. 7. 23. 20:51

NULL 처리 함수 : 

 

NVL : 해당 컬럼의 값이 NULL일 경우 다른 값으로 사용할 수 있도록 변화해주는 함수이다 

 

[표현법]
        NVL(컬럼, 해당 컬럼의 값이 NULL인 경우 사용할 값)

 

 

NVL  사용 예 :

 

SELECT EMP_NAME 사원이름, NVL(BONUS, 0) 보너스
FROM EMPLOYEE;

 

-- BONUS가 NULL일 경우 0으로 변화 시켜준다. 

 

 

SELECT EMP_NAME 사원이름, SALARY*12 연봉 ,(SALARY +(SALARY * NVL(BONUS, 0)))* 12 "보너스 포함 연봉"
FROM EMPLOYEE;

 

NVL2 : 해당 컬럼의 값이 NULL일 경우 표시할 값을 지정하고 

NULL이 아닐 경우(데이터가 존재하는 경우) 표시할 값을 지정 

 

 

  [표현법]
   
        NVL2(컬럼, 데이터가 존재하는 경우 사용할 값, NULL인 경우 사용할 값)

 

 

SELECT EMP_NAME, NVL2(BONUS, 'O', 'X') "보너스 유무"
FROM EMPLOYEE;

 

O : 데이터가 있는 경우 

X : 데이터가 없는 경우 

 

SELECT EMP_NAME, NVL(DEPT_CODE, '미배정'), NVL2(DEPT_CODE, '배정완료', '미배정') "부서"
FROM EMPLOYEE;

 

 

 

 

-- NULLIF : 두 값이 일치하면 NULL, 일치하지 않는다면 비교대상1 반환 
-- [표현법] NULLIF(비교대상1, 비교대상2)

SELECT NULLIF('999','999') FROM DUAL; -- 결과가 NULL
SELECT NULLIF('999','555') FROM DUAL; -- 결과가 "999"

 

 


DECODE : (비교대상(컬럼/연산식/함수식),비교값1, 결과값1, 비교값2,결과값2)

 

 

DECODE : 사용 예  : 

 

-- 사번, 사원명, 주민번호, 성별 조회
SELECT EMP_NAME, EMP_NO, DECODE(SUBSTR(EMP_NO, 8,1), 1,'남',2,'여',3,'남',4,'여' , '알수없음')
FROM employee;

 

 

 

    * CASE  WHEN THEN : 조건식에 따라 결과값을 반환해주는 함수 
    
    [표현법] 
            case 
            WHEN 조건식1 THEN 결과값1 
            WHEN 조건식2 THEN 결과값2 
            WHEN 조건식2 THEN 결과값2
            ... 
            ELSE 결과값 
            END

 

 


 

* 그룹함수 

 

SUM : 해당 컬럼의 값들의 총합을 반환해주는 함수 

 

 SELECT SUM(SALARY) FROM employee;
 -- ''
SELECT TO_CHAR(SUM(SALARY) , 'L999,999,999') 총급여 FROM employee;

 

 

-- 남자 사원들의 총 급여 
SELECT SUM(SALARY) "남자사원들의 총급여"
FROM EMPLOYEE
WHERE SUBSTR(EMP_NO, 8, 1) IN('1','3');

 

 

SELECT SUM(SALARY*12) "부서코드 D5인 사원들의 총 연봉"
FROM EMPLOYEE
WHERE DEPT_CODE = 'D5' ;

 

 

 

SELECT ROUND(AVG(SALARY)) "전체 사원 평균 급여"
FROM EMPLOYEE;

 

* MIN : 해당 컬럼의 값들 중 가장 작은 값 반환해주는 함수  
   
   * MAX : 해당 컬럼의 값들 중 가장 큰 값을 반환해주는 함수 
   
    [표현법] MIN(모든타입)
*/
SELECT MIN(EMP_NAME)"문자타입 최소값", MIN(SALARY) "숫자타입 최소값", MIN(HIRE_DATE) 날짜최소타입
FROM employee;

 

 


    

 

  count : 행의 개수를 반환해주는 함수(단, 조건이 있을 경우 해당 조건에 맞는 행의 개수를 반환)
        
        [표현법]
            count(*) : 조회된 결과에 모든 행의 개수를 반환 
            count(컬럼) : 해당 컬럼값이 NULL이 아닌 것만 행의 갯수로 세어 반환 
            count(DISTINCT 컬럼) : 해당 컬럼의 값의 중복을 제거한 후 의 행의 갯수를 세어 반환 
            => 중복 제거 시 NULL은 포함하지 않고 객수가 세어짐!

 

 

 

SELECT COUNT(*) "전체 사원 수" FROM employee;

 

-- 남자 사원 수 조회
SELECT COUNT(*)
FROM EMPLOYEE
WHERE SUBSTR(EMP_NO, 8, 1) IN('1','3');