오라클 SQL에서 소수점 자리수를 지정하기 위해서 ROUND 함수를 사용한다.
ROUND 함수는 특정 소수점을 반올림하고 나머지를 버리는 함수 이다.
소수점을 반올림하지 않고 절사만 원한다면 TRUNC 함수를 사용해야 한다.
ROUND("값", "자리수")
TRUNC 함수는 오라클의 아주 기본적인 함수이다.
단순 절사기능만 사용했다면 아래의 다양한 옵션을 익히면 조금 더 활용도를 높일 수 있다.
TRUNC 함수는 주로 소수점 절사 및 날짜의 시간을 없앨 때 사용한다.
TRUNC("값", "옵션")
오라클에서 소수점 값을 올리거나 내려서 정수를 변환하기 위해서는 CEIL, FLOOR 함수를 사용한다.
CEIL 함수는 지정한 값에 소수점이 있는 경우 무조건 올려서 다음 정수 값을 반환한다.
FLOOR 함수는 지정한 값에 소수점이 있는 경우 소수점 값을 내려서 정수 값을 반환한다.
소수점 값을 반올림하거나 버림을 하기 위해서는 ROUND, TRUNC 함수를 사용하면 된다.
오라클 CEIL, FLOOR 함수
MOD(n, m) 함수는 n/m의 나머지를 반환하는 함수이다.
n이 음수라면 음수값이 나오는데 m도 음수로 나눌경우 양수로 나오는게 아니라 그대로 음수값이 나온다.
몫은 일반적으로 / 나누기 기호를 이용하여 연산을하면 나옵니다.
하지만 나머지는 자바나 일반적인 언어에서 사용하는 %를 이용하여 구할 수 없습니다.
나머지를 구하려면 MOD 함수를 사용 하면 됩니다.
오라클에서 날짜의 월을 빼거나 더하기 위해서는 ADD_MONTHS 함수를 사용한다.
날짜의 일은 변경되지 않으며 연산값에 따라서 년도와 월만 변경이 된다.
함수를 사용하면서 주의할 점은 날짜의 이전달이나 다음달에 기준날짜의 일자가 존재하지 않으면 해당 월의 마지막 일자가 리턴된다. 예를 들어 "2019-03-31"의 이전달은 "2019-02-28"이 된다.
ADD_MONTHS( '날짜', '숫자' )
오라클에서 두 날짜의 월 차이를 계산해서, 개월 수를 산출할 때는 MONTHS_BETWEEN 함수를 사용한다.
개월 수 계산은 나이, 근속일수를 계산할 때 자주 사용하며, 개월 수를 산출할 때는 함수의 첫 번째 인자의 날짜에서 두 번째 인자의 날짜를 빼는 방식으로 개월 수가 계산된다.
오라클에서 쿼리문을 작성할 때 TO_CHAR() 함수는 날짜, 숫자 등의 값을 문자열로 변환하는 함수이다.
자주 사용하는 기본 함수이므로 아래의 다양한 변환 방법을 알고 있으면 많은 도움이 된다.
날짜 포맷 변경 (YYYY-MM-DD)
YYYY: 년, MM: 월, DD: 일, HH24: 24시간, HH: 12시간, MI: 분, SS:초
오라클에서 문자열을 숫자형으로 변환하기 위해서는 TO_NUMBER 함수와 CAST 함수를 사용할 수 있다.
문자열에 수치 값 외에 문자가 포함되어 있으면 형 변환 시 오류가 발생하는데, 오류를 미리 예방하기 위해서 다양한 방법을 사용할 수 있으며 자주 사용하는 방법 몇 가지를 설명해 두었으니 아래를 참고하면 된다.
오라클에서 문자열을 날짜형 데이터로 형 변환을 하기 위해서는 TO_DATE 함수를 사용하면 된다.
TO_DATE("문자열", "날짜 포맷")
오라클에서는 날짜 포맷의 대소문자를 구분하지 않는다.
'YYYY-MM-DD HH24:MI:SS' → 'yyyy-mm-dd hh24:mi:ss'로 변경해도 정상적으로 작동한다.
날짜의 시간이 12시간 단위면 hh24:mi:ss → hh:mi:ss로 변경하면 된다.
오라클 NVL, NVL2 함수 사용법
해당 칼럼의 값이 NULL 값인 경우 특정값으로 출력하고 싶으면 NVL 함수를 사용하고,
NULL 값이 아닐 경우 특정값으로 출력하고 싶으면 NVL2 함수를 사용하면 된다.
NVL 함수는 값이 NULL인 경우 지정값을 출력하고, NULL이 아니면 원래 값을
그대로 출력한다.*
NVL2 함수는 NULL이 아닌 경우 지정값1을 출력하고, NULL인 경우 지정값2를 출력한다.
위의 NVL, NVL2 함수를 사용하지 않고 DECODE 함수를 사용하여 같은 결과를 출력할 수 있지만, 용도에 맞는 명시적인 함수를 사용하는 것이 좋다.
오라클 SQL에서 GROUP BY 절을 사용하여 그룹별 건수나 합계를 얻을 수 있다.
그룹별 집계된 결과 중 원하는 조건의 결과만 필터링하기 위해서는 HAVING 절을 사용하여 필터 조건을 사용할 수 있다.
HAVING 절과 WHERE 절의 다른 점은 HAVING 절은 GROUP BY 절과 함께 사용해야 하며 집계 함수를 사용하여 조건절을 작성하거나 GROUP BY 컬럼만 조건절에 사용할 수 있다.
HAVING 절에는 COUNT, SUM, AVG, MAX, MIN 등 집계함수를 사용하여 조건을 부여할 수 있다.