오라클에서 수치값의 양수, 음수 부호를 판단하기 위해서는 SIGN 함수를 사용한다. 양수면 1, 음수면 -1, 0이면 0을 반환한다. 숫자의 플러스, 마이너스 부호를 판단하여 WHERE 절에서 조건절에 사용할 수 있으며 CASE, DECODE 함수를 사용할 때도 조건으로 사용할 수 있다. SIGN 함수 기본 사용법 SELECT SIGN(10) --양수(1) , SIGN(-10) --음수(-1) FROM dual 함수 사용법: SIGN( 숫자 ) 양수면 1, 음수면 -1을 반환한다. SELECT SIGN(10) , SIGN(-10) , SIGN(0) , SIGN(NULL) FROM dual 0이면 0, NULL이면 NULL을 반환한다. 입력된 값이 문자열이면 오류가 발생하므로 주의해야 한다. SIGN 함수..
오라클에서 소수점 값을 올리거나 내려서 정수를 변환하기 위해서는 CEIL, FLOOR 함수를 사용한다. CEIL 함수는 지정한 값에 소수점이 있는 경우 무조건 올려서 다음 정수 값을 반환한다. FLOOR 함수는 지정한 값에 소수점이 있는 경우 소수점 값을 내려서 정수 값을 반환한다. 소수점 값을 반올림하거나 버림을 하기 위해서는 ROUND, TRUNC 함수를 사용하면 된다. 목차 소수점 올림 (CEIL 함수) 소수점 내림 (FLOOR 함수) 소수점 반올림, 버림 (ROUND, TRUNC) 소수점 올림 (CEIL 함수) SELECT CEIL(0.5) , CEIL(1.2) , CEIL(1.5) , CEIL(1.8) , CEIL(2.5) FROM dual CEIL 함수는 소수점 값이 있는 경우 무조건 올려서 ..
오라클에서 특정 값인 경우 NULL로 치환하기 위해서는 NULLIF 함수를 사용하면 된다. NVL 함수와 조금 반대되는 함수라고 생각하면 된다. NVL 함수는 NULL인 경우 특정 값으로 치환을 하고, NULLIF 함수는 특정 값인 경우 NULL로 치환을 한다. NULLIF 함수는 두 개의 칼럼 값이 동일한지 판단할 때도 사용할 수 있다. 칼럼의 값을 특정 문자열과 비교 WITH mydb AS ( SELECT 1 AS item_id, 'ORACLE' AS item_desc FROM dual UNION ALL SELECT 2 AS item_id, 'SQL' AS item_desc FROM dual ) SELECT item_id , item_desc , NULLIF(item_desc, 'ORACLE') AS..
오라클에서 NULL 값을 치환할 때는 NVL, NVL2, COALESCE 함수를 사용한다. COALESCE 함수는 NVL 함수의 기능이 조금 더 확장된 함수라고 생각하면 된다. NVL 함수와 동일하게 사용할 수도 있지만, 여러 개의 칼럼의 NULL 값을 판별해야 할 경우 NULL이 아닌 첫 번째 칼럼의 값을 반환할 때 유용하게 사용할 수 있다. COALESCE(exp1, exp2, exp3, exp4 ...) 와 같이 함수의 인자의 개수는 동적으로 입력할 수 있다. 기본 사용법 WITH customers AS ( SELECT 1 AS c_id, 'Tammy Bryant' AS c_name, '010-1234-5678' AS tel_no1, '02-345-6789' AS tel_no2, NULL AS te..
오라클에서 해당 월(MONTH)의 마지막 일자를 구하기 위해서는 LAST_DAY 함수를 사용하면 된다. 월별로 마지막 일자(28일, 29일, 30일, 31일)가 틀리기 때문에 조회를 할 때마다 직접 계산을 하는 건 많이 번거롭다. LAST_DAY 함수를 사용하면 이번 달의 마지막 일자, 특정 일자에 해당하는 월의 마지막 일자를 쉽게 구할 수 있다. 기본 사용법 SELECT LAST_DAY(TO_DATE('2022-01-17', 'YYYY-MM-DD')) FROM dual 특정일자에 해당하는 월의 마지막 일자를 구하는 예제이다. 1월의 마지막 일자 31일 반환된다. 활용 예제 이번 달 시작 일자 종료 일자 구하기 SELECT TRUNC(SYSDATE, 'MM') AS first_day_of_month , ..
오라클에서 문자열을 날짜형 데이터로 형 변환을 하기 위해서는 TO_DATE 함수를 사용하면 된다. TO_DATE("문자열", "날짜 포맷") 아래의 예제를 보면 쉽게 이해할 수 있다. SELECT TO_DATE('2021-12-12', 'YYYY-MM-DD') , TO_DATE('2021-12-12 17:10:00', 'YYYY-MM-DD HH24:MI:SS') FROM dual 오라클에서는 날짜 포맷의 대소문자를 구분하지 않는다. 'YYYY-MM-DD HH24:MI:SS' → 'yyyy-mm-dd hh24:mi:ss'로 변경해도 정상적으로 작동한다. 날짜의 시간이 12시간 단위면 hh24:mi:ss → hh:mi:ss로 변경하면 된다. SELECT TO_DATE('20211212', 'YYYYMMDD'..
오라클에서 LNNVL 함수는 간단한 함수 같지만, 함수의 기능을 제대로 이해하지 않으면 아주 복잡하게 느껴지는 함수이다. LNNVL 함수는 해당 컬럼에 NULL이 존재할 경우 NULL 처리와 조건문을 한 번에 연산하기 위해서 사용한다. LNNVL 함수는 아래의 상황일 때 조건이 TRUE이다. 컬럼이 NULL인 경우 = TRUE 함수 내부 조건이 FALSE인 경우 = TRUE 오라클의 NULL 처리를 정확히 이해하고 있지 않으면 아래를 먼저 읽어보기 바란다. [Oracle] 오라클 NULL 사용시 주의사항 정리 사용 예시 - 1 SELECT ename , job , comm FROM emp WHERE deptno = 30 AND LNNVL(comm = 0) LNNVL(comm = 0) - comm is n..
오라클의 GROUPING, GROUPING_ID 함수는 소계와 합계를 집계할 때 사용하는 ROLLUP, CUBE, GROUPING SETS 함수와 함계 사용된다. 소계와 합계로 집계되어 출력된 행을 구분할 때 사용한다. 기본 사용법 GROUPING 함수는 1개의 매개변수만 있으며, GROUPING_ID 함수는 여러개의 매개변수를 입력할 수 있다. GROUPING 함수 SELECT job , deptno , SUM(sal) , GROUPING(job) , GROUPING(deptno) FROM emp WHERE job IN ('ANALYST', 'MANAGER') GROUP BY ROLLUP(job, deptno) GROUPING 함수는 소계, 합계로 집계된 행의 컬럼 NULL을 구분할 수있다. NULL인..
오라클에서 합계와 소계를 구하기 위해서는 ROLLUP 함수를 많이 사용한다. ROLLUP 함수는 소계와 합계를 순서에 맞게 반환하지만 CUBE 함수는 계산 가능한 모든 소계와 합계를 반환한다. 기본사용법 SELECT job , SUM(sal) FROM emp GROUP BY CUBE(job) ROLLUP 함수와 다르게 합계를 먼저 표시한다. 그룹 컬럼이 여러개인 경우 SELECT job , deptno , SUM(sal) FROM emp GROUP BY CUBE(job, deptno) 그룹 컬럼으로 산출할 수 있는 모든 소계와 합계를 반환한다. 원하는 소계, 합계 추출하기 - 1 SELECT job , deptno , SUM(sal) FROM emp GROUP BY CUBE(job, deptno) HAV..
오라클에서 전체 합계 대비 비율 또는 백분율을 구하기 위해서는 RATIO_TO_REPORT 함수를 이용하면 된다. RATIO_TO_REPORT 이용하면 비율이 반환되는데, 여기에 100을 곱하면 백분율(%)로 바꿀 수 있다. 비율 구하기 SELECT ename , sal , RATIO_TO_REPORT(sal) OVER() AS sal_ratio FROM emp WHERE job = 'MANAGER' 조회된 전체 급여(sal) 합계 대비 해당 행의 비율이 반환된다. 백분율 구하기 SELECT ename , sal , ROUND(RATIO_TO_REPORT(sal) OVER(), 2) * 100 || '%' AS sal_rate FROM emp WHERE job = 'MANAGER' 비율에서 소수점 둘째자..