create table dept as select * from scott.dept;

create table emp as select * from scott.emp;

alter table dept add constraint dept_pk primary key(deptno);

create index dept_idx on dept(loc);

create index emp_idx on emp(deptno, job);

exec dbms_stats.gather_table_stats(user, 'emp');

exec dbms_stats.gather_table_stats(user, 'dept');


select /*+ push_pred(e) */ d.dname, e.*
from   dept d
     ,(select deptno, empno, ename, job, sal, sal * 1.1 sal2, hiredate from emp
       where  job = 'CLERK'
       union all
       select deptno, empno, ename, job, sal, sal * 1.2 sal2, hiredate from emp
       where  job = 'SALESMAN' ) e
where  e.deptno = d.deptno
and    d.loc = 'CHICAGO'
