개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

 

* 그룹함수란?
- 테이블의 전체 행을 하나 이상의 컬럼을 기준으로

그룹화하여 그룹별로 결과를 출력하는 함수

- ​그룹함수는 통계적인 결과를 출력하는데 자주 사용

 

- GROUP BY : 전체 행을 group_by_expression을 기준으로 그룹화
- HAVING : GROUP BY 절에 의해 생성된 그룹별로 조건 부여

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

* DECODE 함수와 CASE 문

 - DECODE 함수 내부에서 DECODE문을 사용하는 경우에는 성능저하 발생
- UNION ALL를 사용할 경우 동일 테이블에 대한 인덱스 스캔이나 테이블 스캔 반복발생으로 성능저하
 - Concat(‘||’) 함수로 비교대상컬럼를 묶어서 DECODE 함수의 중복사용을 줄이고, CASE 문으로 비교하는 방식 추천(INDEX 주의)

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

* CASE 함수
- CASE 함수는 DECODE 함수의 기능을 확장한 함수
- DECODE 함수는 표현식 또는 칼럼 값이 ‘=‘ 비교를 통해 조건과 일치하는 경우에만 다른 값으로 대치할 수 있지만, CASE 함수에서는 산술 연산, 관계 연산, 논리 연산과 같은 다양한 비교가 가능
- 또한 WHEN 절에서 표현식을 다양하게 정의
- 8.1.7에서부터 지원되었으며, 9i에서 SQL, PL/SQL에서 완벽히 지원
- DECODE 함수에 비해 직관적인 문법체계와 다양한 비교 표현식 사용

 

 

 

 

* 사용 예
- 교수 테이블에서 소속 학과에 따라 보너스를 다르게 계산하여 출력하여라. 학과 번호별로 보너스는 다음과 같이 계산한다. 학과 번호가 101이면 보너스는 급여의 10%, 102이면 20%, 201이면 30%, 나머지 학과는 0%이다.

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

 

 

* DECODE 함수
- DECODE 함수는 기존 프로그래밍 언어에서 IF문이나 CASE 문으로 표현되는 복잡한 알고리즘을 하나의 SQL 명령문으로 간단하게 표현할 수 있는 유용한 기능

- DECODE 함수에서 비교 연산자는 ‘=‘만 가능

 

 

표현식 또는 칼럼의 값이 SEARCH1 값과 일치하면 RESULT1값을 반환, SEARCH2값과 일치하면 RESULT2 값 반환
- 일치하는 값이 없거나 NULL인 경우에는 기본값 반환
- 기본값이 없는 경우에는 NULL 반환

 

 

 

 

* 사용 예
- 교수 테이블에서 교수의 소속 학과 번호를 학과 이름으로 변환하여 출력하여라. 학과 번호가 101이면 ‘컴퓨터공학과’, 102이면 ‘멀티미디어학과’, 201이면 ‘전자공학과’, 나머지 학과 번호는 ‘기계공학과’(default)로 변환한다. 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

 

* COALESCE 함수
- COALESCE 함수는 인수중에서  NULL이 아닌 첫 번째 인수를 반환하는 함수

 

 

 

- expression-1 : expression-1이 NULL이 아니면 expression-1을 반환
- expression-2 : expression-1이 NULL이고 expression-2가 NULL이 아니면 expression-2를 반환
- expression-n : expression-1부터 expression-n-1까지의 값이 NULL이고 expression-n이 NULL이 아니면 expression-n을 반환

 

 

 

 

* 사용 예
- 교수 테이블에서 보직수당이 NULL이 아니면 보직수당을 출력하고, 보직수당이 NULL이고 급여가 NULL이 아니면 급여를 출력, 보직수당과 급여가 NULL이면 0을 출력하여라

 

 

 

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

 

* NULLIF 함수
- NULLIF 함수는 두 개의 표현식을 비교하여 값이 동일하면 NULL을 반환하고,일치하지 않으면 첫 번째 표현식의 값을 반환 

 

 

 

 * 사용 예
- 교수 테이블에서 이름의 바이트 수와 사용자 아이디의 바이트 수를 비교해서 같으면 NULL을 반환하고 같지 않으면 이름의 바이트 수를 반환하여라

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

* NVL2 함수
- NVL2 함수는 첫 번째 인수 값이 NULL이 아니면 두 번째 인수 값을 출력하고, 첫 번째 인수 값이 NULL이면 세 번째 인수 값을 출력하는 함수

 

 

 

- expression1 : NULL을 포함하는 칼럼 또는 표현식
- expression2 : expression1이 NULL이 아닐 때 반환되는 값
- expression3 : expression1이 NULL일 때 대체되는 값

 

 

 

* 사용 예
- 102번 학과 교수중에서 보직수당을 받는 사람은 급여와 보직수당을 더한 값을 급여 총액으로 출력하여라. 단, 보직수당을 받지 않는 교수는 급여만 급여 총액으로 출력하여라.

 

+ Recent posts