Skip to content

Instantly share code, notes, and snippets.

@julianhyde
Created October 16, 2024 00:46
Show Gist options
  • Save julianhyde/bf44e5403a8086de58e201456db99c32 to your computer and use it in GitHub Desktop.
Save julianhyde/bf44e5403a8086de58e201456db99c32 to your computer and use it in GitHub Desktop.
Query that uses the "SCOTT" schema (tables EMP, DEPT, BONUS, SALGRADE, DUMMY) as CTEs, in Oracle SQL
with dummy as (
select 0 as dummy from dual
), dept AS (
select 10 as deptno, 'ACCOUNTING' as dname, 'NEW YORK' as loc from dual union all
select 20, 'RESEARCH', 'DALLAS' from dual union all
select 30, 'SALES', 'CHICAGO' from dual union all
select 40, 'OPERATIONS', 'BOSTON' from dual
), emp AS (
select 7839 as empno, 'KING' as ename, 'PRESIDENT' as job, null as mgr, date '1981-11-17' as hiredate, 5000 as sal, null as comm, 10 as deptno from dual union all
select 7698, 'BLAKE', 'MANAGER', 7839, to_date('1-5-1981','dd-mm-yyyy'), 2850, null, 30 from dummy union all
select 7782, 'CLARK', 'MANAGER', 7839, to_date('9-6-1981','dd-mm-yyyy'), 2450, null, 10 from dummy union all
select 7566, 'JONES', 'MANAGER', 7839, to_date('2-4-1981','dd-mm-yyyy'), 2975, null, 20 from dummy union all
select 7788, 'SCOTT', 'ANALYST', 7566, to_date('13-JUL-87','dd-mm-rr') - 85, 3000, null, 20 from dummy union all
select 7902, 'FORD', 'ANALYST', 7566, to_date('3-12-1981','dd-mm-yyyy'), 3000, null, 20 from dummy union all
select 7369, 'SMITH', 'CLERK', 7902, to_date('17-12-1980','dd-mm-yyyy'), 800, null, 20 from dummy union all
select 7499, 'ALLEN', 'SALESMAN', 7698, to_date('20-2-1981','dd-mm-yyyy'), 1600, 300, 30 from dummy union all
select 7521, 'WARD', 'SALESMAN', 7698, to_date('22-2-1981','dd-mm-yyyy'), 1250, 500, 30 from dummy union all
select 7654, 'MARTIN', 'SALESMAN', 7698, to_date('28-9-1981','dd-mm-yyyy'), 1250, 1400, 30 from dummy union all
select 7844, 'TURNER', 'SALESMAN', 7698, to_date('8-9-1981','dd-mm-yyyy'), 1500, 0, 30 from dummy union all
select 7876, 'ADAMS', 'CLERK', 7788, to_date('13-JUL-87', 'dd-mm-rr') - 51, 1100, null, 20 from dummy union all
select 7900, 'JAMES', 'CLERK', 7698, to_date('3-12-1981','dd-mm-yyyy'), 950, null, 30 from dummy union all
select 7934, 'MILLER', 'CLERK', 7782, to_date('23-1-1982','dd-mm-yyyy'), 1300, null, 10 from dummy)
select d.deptno, avg(sal),
(select avg(sal) from emp where deptno = d.deptno) as avg_sal
from dept d
join emp e on e.deptno = d.deptno
where e.job <> 'ANALYST'
group by d.deptno;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment