ezinc 교육 자료
Search posts...

Categories

  • All Posts16
  • 3rabbitz1
  • 클립리포트6
  • Ezworks3
  • Git5
  • 문서 작성 가이드1
© 2026 Git Static Doc Server. All rights reserved.
Open Source Licenses
클립리포트•2026년 5월 14일

EMP, DEPT 클립리포트 실습 문제 해설본

CAUTION

이 문서는 강사용 해설본입니다. 학습자에게 배포하지 말고, 채점 기준과 풀이 방향을 확인할 때만 사용하세요.

데이터 확인

테이블 건수 컬럼 설명
DEPT 6 DEPTNO 부서번호
DEPT 6 DNAME 부서명
DEPT 6 LOC 지역
EMP 10 EMPNO 사원번호
EMP 10 ENAME 사원명
EMP 10 JOB 직무
EMP 10 MGR 관리자 사원번호
EMP 10 HIREDATE 입사일
EMP 10 SAL 급여
EMP 10 COMM 수당
EMP 10 DEPTNO 부서번호

특이 데이터:

  • COMM은 NULL인 행이 많고, TURNER는 0입니다.
  • ENAME에 131BLAKE처럼 숫자가 포함된 값이 있습니다.
  • DEPT에는 사원이 없는 부서가 있습니다. 예: 40, 50, 60

공통 해설

모든 문제는 Prepared Statement 방식으로 조회조건을 전달하게 유도합니다. 문제지에는 기능명을 직접 노출하지 않고, “화면에서 입력받은 조회조건을 데이터셋 조건으로 전달”한다고만 표현했습니다.

날짜는 쿼리에서 YYYYMMDD 문자로 만들고, 디자이너 출력양식에서 문제별 요구 결과와 같은 항목을 선택하게 합니다.

TO_CHAR(A.HIREDATE, 'YYYYMMDD') AS HIREDATE_YMD

문제별 예상 출력:

문제 1, 2: 20260308 -> 2026-03-08 목
문제 3:    20260308 -> 2026.03.08 목요일

하단 페이지 번호는 학습자에게 PageNofM이라는 이름을 직접 주지 않고, 1/2, 2/2처럼 보이게 하라고 출제했습니다. 해설에서는 시스템 필드 PageNofM을 사용하면 됩니다.


문제 1 해설. 사원 목록 출력물

의도

기본 목록 출력, 매 페이지 반복 제목, 페이지 하단, 시스템 번호, 날짜 출력양식, 조회조건 전달을 확인하는 문제입니다.

조회조건

조건 데이터셋 파라미터 교체 형식
JOB PS_JOB '{value}'

예시 SQL

SELECT A.EMPNO AS EMPNO
     , A.ENAME AS ENAME
     , A.JOB AS JOB
     , A.MGR AS MGR
     , TO_CHAR(A.HIREDATE, 'YYYYMMDD') AS HIREDATE_YMD
     , A.SAL AS SAL
     , A.COMM AS COMM
     , A.DEPTNO AS DEPTNO
  FROM EMP A
 WHERE 1 = 1
   AND (A.JOB = {dataset.PS_JOB} OR {dataset.PS_JOB} IS NULL)
 ORDER BY A.EMPNO

NOTE

디자이너에서 빈 문자열 처리가 어렵다면 파라미터 기본값을 NULL로 넘기거나, 조건 없이 전체 조회되는 별도 처리 방식을 사용해도 됩니다. 핵심은 JOB 값이 있을 때 여러 건이 나올 수 있는 조건이어야 한다는 점입니다.

리포트 구성

요구사항 표현 해설
제목이 매 페이지마다 보임 페이지 머리글 사용
하단이 매 페이지마다 보임 페이지 바닥글 사용
1/2, 2/2 형식 시스템 필드 PageNofM 사용
순번 기본 번호 필드 시스템 필드 또는 디자이너 제공 행 번호 필드 사용
2026-03-08 목 출력양식 yyyy-mm-dd aaa 선택

채점 포인트

  • 문제지에 기능명이 없어도 페이지 머리글/바닥글을 찾아 썼는가
  • JOB 조건이 데이터셋 파라미터로 전달되는가
  • 조건을 비웠을 때 전체 사원이 출력되는가
  • 입사일이 YYYYMMDD 원본이 아니라 yyyy-mm-dd aaa 형태로 보이는가
  • 하단 페이지 번호가 PageNofM 글자가 아니라 1/2처럼 렌더링되는가

문제 2 해설. 부서별 사원 상세 출력물

의도

서브리포트를 부서 행의 일부 칸에 넣는 것이 아니라, 부서 정보 아래의 가로 전체 영역으로 배치하도록 유도합니다. 메인 DEPT, 서브 EMP 구조가 가장 자연스럽습니다.

메인 데이터셋 조회조건

조건 데이터셋 파라미터 교체 형식
LOC PS_LOC '{value}'

메인 데이터셋 SQL

SELECT A.DEPTNO AS DEPTNO
     , A.DNAME AS DNAME
     , A.LOC AS LOC
  FROM DEPT A
 WHERE 1 = 1
   AND (A.LOC = {dataset.PS_LOC} OR {dataset.PS_LOC} IS NULL)
 ORDER BY A.DEPTNO

서브 데이터셋 SQL

SELECT A.EMPNO AS EMPNO
     , A.ENAME AS ENAME
     , A.JOB AS JOB
     , TO_CHAR(A.HIREDATE, 'YYYYMMDD') AS HIREDATE_YMD
     , A.SAL AS SAL
     , NVL(TO_CHAR(A.COMM), '-') AS COMM_TEXT
     , A.DEPTNO AS DEPTNO
  FROM EMP A
 WHERE A.DEPTNO = {dataset.PS_DEPTNO}
 ORDER BY A.EMPNO

서브리포트 파라미터 연결

구분 값
서브 데이터셋 파라미터 PS_DEPTNO
교체 형식 {value}
연결 값 메인 데이터셋의 DEPTNO

배치 기준

영역 구성
메인 본문 부서번호, 부서명, 지역
서브리포트 부서 아래 가로 전체 영역에 사원 목록 출력
서브리포트 하단 부서별 급여 합계

공식 필드 예시

공식 필드 용도
DEPT_SUM_SAL 현재 부서의 급여 합계
var result = rexpert.sum("본문", "SAL", false, "", "");
return result;

IMPORTANT

실제 요약 범위명은 디자이너에서 생성된 섹션/그룹 이름에 맞춰 조정해야 합니다. 해설의 핵심은 서브리포트 내부에서 부서별 합계를 계산한다는 점입니다.

채점 포인트

  • DEPT와 EMP를 각각 별도 데이터셋으로 만들었는가
  • LOC 조건이 메인 데이터셋에 전달되는가
  • 서브리포트가 한 줄 전체 폭을 사용하는 형태인가
  • 서브리포트가 메인 부서의 DEPTNO를 받아 해당 부서 사원만 출력하는가
  • COMM의 NULL이 -로 표시되는가
  • 부서별 급여 합계가 표시되는가

문제 3 해설. 부서/직무별 사원 현황 출력물

의도

조인된 평면 데이터를 출력물에서 부서/직무 계층으로 다시 나누는 문제입니다. 그룹 섹션, 그룹 바닥글, 공식 필드, 조건스타일, 조회조건 전달을 함께 확인합니다.

조회조건

조건 데이터셋 파라미터 교체 형식
최소 급여 PS_MIN_SAL {value}

예시 SQL

SELECT B.DEPTNO AS DEPTNO
     , B.DNAME AS DNAME
     , B.LOC AS LOC
     , A.JOB AS JOB
     , A.EMPNO AS EMPNO
     , A.ENAME AS ENAME
     , A.MGR AS MGR
     , TO_CHAR(A.HIREDATE, 'YYYYMMDD') AS HIREDATE_YMD
     , A.SAL AS SAL
     , A.COMM AS COMM
     , NVL(TO_CHAR(A.COMM), '-') AS COMM_TEXT
  FROM DEPT B
 INNER JOIN EMP A
    ON A.DEPTNO = B.DEPTNO
 WHERE 1 = 1
   AND (A.SAL >= {dataset.PS_MIN_SAL} OR {dataset.PS_MIN_SAL} IS NULL)
 ORDER BY B.DEPTNO
        , A.JOB
        , A.ENAME

그룹 구성

그룹 단계 기준 필드 배치 위치
1단계 DEPTNO 부서 머리/바닥 영역
2단계 JOB 직무 머리/바닥 영역

그룹은 바깥쪽부터 안쪽으로 추가합니다.

  1. 부서 기준 그룹 생성
  2. 직무 기준 그룹 생성
  3. 본문에 사원 행 배치
  4. 직무 바닥 영역에 직무별 급여 합계 배치
  5. 부서 바닥 영역에 부서별 급여 합계 배치
  6. 보고서 마지막 영역에 전체 급여 합계와 전체 평균 급여 배치

공식 필드 예시

공식 필드 요약 범위 요약 필드 출력 위치
JOB_SUM_SAL 직무 그룹 SAL 직무 바닥 영역
DEPT_SUM_SAL 부서 그룹 SAL 부서 바닥 영역
TOTAL_SUM_SAL 전체 SAL 보고서 마지막 영역
TOTAL_AVG_SAL 전체 SAL 보고서 마지막 영역

조건스타일 예시

조건 적용 대상 스타일
SAL >= 3000 본문 행 또는 급여 칸 배경색 강조, 굵게
COMM_TEXT != '-' 수당 칸 글자색 강조
ENAME == 'KING' 사원명 칸 또는 행 테두리/배경 강조

WARNING

행 전체 강조가 어려우면 급여 칸, 수당 칸, 사원명 칸처럼 칸 단위로 적용해도 됩니다.

채점 포인트

  • PS_MIN_SAL 조건이 Prepared Statement 방식으로 전달되는가
  • 조건을 비워 두었을 때 여러 부서와 여러 직무가 출력되는가
  • 입사일이 YYYYMMDD 원본이 아니라 yyyy.mm.dd aaaa 형태로 보이는가
  • 부서/직무 그룹 순서가 자연스러운가
  • 직무별 소계와 부서별 소계가 각각 다른 위치에 표시되는가
  • 전체 합계/평균이 마지막에 표시되는가
  • 조건스타일이 2개 이상 실제 출력 결과에 보이는가
  • 하단 페이지 번호가 1/2처럼 표시되는가

전체 평가 기준

항목 배점 예시 확인 내용
조회조건 전달 15 각 문제의 조건이 데이터셋 조건으로 전달됨
데이터셋 구성 15 문제별 데이터셋 수와 SQL 의도 일치
섹션 활용 20 반복 제목, 하단, 그룹, 본문, 소계 영역 사용
필드 및 출력양식 15 날짜, 숫자, 정렬, 여백
서브리포트 15 전체 폭 배치와 파라미터 연결
공식 필드 10 소계/합계/평균 계산
조건스타일 5 조건과 스타일 적용
결과 이미지 제출 5 각 문제별 결과 이미지 첨부

제출물 확인 문구

학습자에게는 다음 기준으로 피드백하면 좋습니다.

1번은 기본 목록 출력, 반복 제목/하단, 날짜 출력양식을 보는 문제입니다.
2번은 데이터셋 분리와 하위 출력 영역 연결을 보는 문제입니다.
3번은 조인 결과를 부서/직무 단위로 다시 구조화하는 능력을 보는 문제입니다.
← Back to all posts