본문 바로가기

DB/Oracle

[Oracle] 책 3장 연습문제 풀이 기록

2. student 테이블의 birthday 컬럼을 참조해서 아래와 같이 월별로 생일자 수를 출력하세요. [212 페이지]

 

[1차 시도] PIVOT

[2차 시도] DECODE

 

▶ PIVOT 사용법이 최선인지 모르겠으나 결과에 EA를 붙여 출력해야 한다면 DECODE를 사용한 코드가 더 효율적일 것으로 생각됨 ( 3번 문제도 마찬가지 )

 


4. emp 테이블을 사용해 아래의 화면과 같이 부서별 직급별로 급여 합계 결과를 출력하세요 [213 페이지]

 

▶ 사용 함수 힌트

(1) 문제에 힌트가 숨어있음. [부서별 직급별로] 결과 값에는 부서번호를 제외한 직업별 합계 표기와 부서별 합계, 부서와직업별 합계가 표기됨.

더보기

한 마디로 기준별 소계가 요약되어 있는데, 이를 그룹핑하고 효과적으로 세 가지 조건에 맞는결과를 얻을 수 있는 그룹 함수가 존재함.

(2) 데이터를 확인하면 특정 데이터는 직업이 없고(Null) 특정 부서에만 소속되어 있음. 결과 값은 해당 부서와 직업의 월급 합계를 나타내는 것으로, 한 마디로 직업이 Null인 데이터는 합산해서는 안 됨.

더보기

 특정 컬럼의 값이 Null일 경우 var 1을 반환하며, 아닐 경우 var 2를 반환하는 함수가 존재함.

▶ 정답