본문 바로가기
728x90
반응형

DB56

집계 함수...null 을 빼고 계산한다. 평균을 구할때 조심해야 함. NULL 을 NVL 을 사용하던지 해야함. NVL(COMM, 0) -- 아래 예제에서 보면 a1과 a2의 결과가 동일하고, a3는 결과가 다른다. sum, avg, count는 null 을 제외하고 계산한다. (단, count(*) 는 모두 계산함) SELECT round(avg(comm)) a1, round(sum(comm)/count(comm)) a2, round(sum(comm)/count(*)) a3 FROM emp; 그래서 올바른 쿼리는 아래와 같이 nvl 을 사용해주는 것이다. SELECT round(avg(nvl(comm, 0))) FROM emp; 2022. 12. 21.
RECORD -- RECORD 타입정의...구조체나 클래스와 비슷함. DECLARE TYPE REC_DEPT IS RECORD ( deptno NUMBER(2) NOT NULL := 99, dname DEPT.DNAME%TYPE, loc DEPT.LOC%TYPE ); dept_rec REC_DEPT; BEGIN dept_rec.deptno := 90; dept_rec.dname := 'DATABASE'; dept_rec.loc := 'SEOUL'; DBMS_OUTPUT.PUT_LINE('DEPTNO :' || dept_rec.deptno); DBMS_OUTPUT.PUT_LINE('DNAME :' || dept_rec.dname); DBMS_OUTPUT.PUT_LINE('LOC :' || dept_rec.loc); E.. 2022. 12. 20.
반복문 -- LOOP 문 예제...EXIT WHEN 을 이용한 탈출 DECLARE V_NUM NUMBER := 0; BEGIN LOOP DBMS_OUTPUT.PUT_LINE('현재 V_NUM :' || V_NUM); V_NUM := V_NUM + 1; EXIT WHEN V_NUM > 4; END LOOP; END; -- EXIT~IF 를 사용한 탈출 DECLARE V_NUM NUMBER := 0; BEGIN LOOP DBMS_OUTPUT.PUT_LINE('현재 V_NUM :' || V_NUM); V_NUM := V_NUM + 1; IF V_NUM > 4 THEN EXIT; END IF; END LOOP; END; -- WHILE LOOP 사용하기 DECLARE V_NUM NUMBER := 0; BEGIN WHI.. 2022. 12. 20.
PL-SQL 샘플 002 - 조건문 사용법 -- IF THEN 문 사용예 DECLARE V_NUMBER NUMBER := 13; BEGIN IF MOD(V_NUMBER, 2) = 1 THEN DBMS_OUTPUT.PUT_LINE('V_NUMBER는 홀수 입니다.'); END IF; END; -- IF THEN ELSE 예 DECLARE V_NUMBER NUMBER := 14; BEGIN IF MOD(V_NUMBER, 2) = 1 THEN DBMS_OUTPUT.PUT_LINE('V_NUMBER는 홀수 입니다.'); ELSE DBMS_OUTPUT.PUT_LINE('V_NUMBER는 짝수 입니다.'); END IF; END; -- IF THEN ELSIF 예 DECLARE V_SCORE_NUMBER NUMBER := 87; BEGIN IF V_SCOR.. 2022. 12. 19.
728x90
반응형