함수(NULL,문자,날짜)

정은지·2022년 8월 29일
0
post-custom-banner

NULL 함수

-null값이 연산에서 사용되면 결과과 null이다.

    1. NVL 함수
      NVL(칼럼, 칼럼값이 NULL일 때 대신 사용할 값)
    1. NVL2 함수
      IF 재질의 함수
      NVL2(칼럼, 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))

숫자함수

  1. 제곱
    POWER(A, B) : A의 B제곱

     SELECT POWER(2,10) FROM DUAL;
  2. 제곱근(루트)
    SQRT(A) : 루트 A

SELECT SQRT(25) FROM DUAL;
SQRT(5) : 25 -- 틀림. 시험문제에 가끔나옴
  1. 절대값
SELECT ABS(5) FROM DUAL;
SELECT ABS(-5) FROM DUAL;
  1. 나머지
MOD(A,B) : A를 B로 나눈 나머지 
SELECT MOD(7,2) FROM DUAL;
  1. 부호 판별
SIGN(A) : A의 부호가 +이면 1, -이면 -1, 0이면 0을 반환한다. 
SELECT SIGN(5), SIGN(-5), SIGN(0) FROM DUAL;
  1. 정수로 올림
CEIL(A) : 실수 A를 정수로 올림
SELECT CEIL(1.1), CEIL(-1.1)FROM DUAL;
  1. 정수로 내림
FLOOR(A) : 실수 A를 정수로 내림 
SELECT FLOOR(1.1), FLOOR(-1.1) FROM DUAL;
  1. 원하는 자릿수로 절사

    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; 
  1. 원하는 자릿수로 반올림
    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.111
POWER(10,2))/POWER(10,2) --1.12
,CEIL(11111POWER(10,-1))/POWER(10,-1) --11120
,CEIL(11111
POWER(10,-2))/POWER(10,-2) --11200
FROM
DUAL;

-- 2. 원하는 자릿수로 내림
-- CEIL 대신 FLOOR를 사용하면 됨

post-custom-banner

0개의 댓글