-null값이 연산에서 사용되면 결과과 null이다.
SELECT
NVL2(NAME, NAME ||'님' , '아무개')
--(||은 더하기 연산임)
,NVL2(KOR, '응시', '결시')
,NVL2(ENG, '응시', '결시')
,NVL2(MATH, '응시', '결시')
FROM SAMPLE;
1.통계(합계, 평균, 최대, 최소, 개수 등)을 낼 때 사용
2. NULL값을 연산에서 제외
3. 종류
--1) SUM : 칼럼합계 (ROW단위로 합치는거 아님)
--2) AVG(칼럼) : 칼럼 평균 (AVE X)
--3) MAX(칼럼) : 칼럼 최대값
--4) MIN(칼럼) : 칼럼 최솟값
--5) COUNT(칼럼) : 칼럼에 입력된 데이터의 갯수(NULL값셈)
SUM() - 괄호 안에는 인수 1개만 올 수 있음
NULL값 제외라서 포함하고 싶으면
SUM(NVL(KOR,0))
제곱
POWER(A, B) : A의 B제곱
SELECT POWER(2,10) FROM DUAL;
제곱근(루트)
SQRT(A) : 루트 A
SELECT SQRT(25) FROM DUAL;
SQRT(5) : 25 -- 틀림. 시험문제에 가끔나옴
SELECT ABS(5) FROM DUAL;
SELECT ABS(-5) FROM DUAL;
MOD(A,B) : A를 B로 나눈 나머지
SELECT MOD(7,2) FROM DUAL;
SIGN(A) : A의 부호가 +이면 1, -이면 -1, 0이면 0을 반환한다.
SELECT SIGN(5), SIGN(-5), SIGN(0) FROM DUAL;
CEIL(A) : 실수 A를 정수로 올림
SELECT CEIL(1.1), CEIL(-1.1)FROM DUAL;
FLOOR(A) : 실수 A를 정수로 내림
SELECT FLOOR(1.1), FLOOR(-1.1) FROM DUAL;
원하는 자릿수로 절사
RUNC(A, [DIGIT]) : 실수 A를 DIGIT 자릿수로 절사, DIGIT 생략하면 정수로 절사
SELECT
TRUNC(1.9999) -- 1
,TRUNC(1.9999, 1) -- 1.9
,TRUNC(1.9999, 2) -- 1.99
FROM
DUAL;
SELECT
TRUNC(9999,-1)---9990(원 단위 절사)
,TRUNC(9999,-2)---9900
FROM
DUAL;
원하는 자릿수로 반올림
ROUND(A, [DIGIT]) : 실수 A를 DIGIT 자릿수로 반올림, DIGIT 생략하면 정수로 반올림
SELECT
ROUND(145.45) --- 145
,ROUND(145.45, 1)--145.5
,ROUND(145.45, -1) -- 150
FROM
DUAL;
문제 발생
1. 원하는 자릿수로 올림 (★?) DIGIT
-- 1) 소수 1자리 : CEIL(값 10) / 10 1
-- 2) 소수 2자리 : CEIL(값 100) / 1000 2
-- 3) 소수 3자리 : CEIL(값 1000) / 1000 3
-- 4) 정수 : CEIL(값 1)/1 0
-- 5) 일의 자리 : CEIL(값 0.1)/0.1 -1
-- 6) 십의 자리 : CEIL(값0.01)/0.01 -2
-- 7) 백의 자리 : CEIL(값0.001)/0.001 -3
-- 일반화 : CEIL(값POWER(10,DIGIT)) / POWER(10, DIGIT)
SELECT
CEIL(1.111POWER(10,1))/POWER(10,1) --1.2
,CEIL(1.111POWER(10,2))/POWER(10,2) --1.12
,CEIL(11111POWER(10,-1))/POWER(10,-1) --11120
,CEIL(11111POWER(10,-2))/POWER(10,-2) --11200
FROM
DUAL;
-- 2. 원하는 자릿수로 내림
-- CEIL 대신 FLOOR를 사용하면 됨