Está en la página 1de 3

---Se desea obtener el siguiente reporte :

--CODIGO NOMBRE CIUDAD TOTAL TOTAL


--VENDEDOR
CLIENTES VENTAS
--Total de ventas que cada vendedor realiza en cada ciudad.
select e.employee_id Codigo,
e.first_name||' '||e.last_name Nombre,
l.regional_group Ciudad,
(select count(*) from customer where salesperson_id=e.employee_id ) To
tal_Clientes,
nvl((select sum(amount) from sales where salesperson_id=e.employee_id
),0) Total_Ventas
from employee e, department d, location l
where e.department_id=d.department_id
and d.location_id=l.location_id
/
--TEMA NRO. 2
--Hallar el departamento cuya suma de salarios sea la ms alta, mostrando esta sum
a de salarios y el nombre del --departamento.
select d.department_id, d.name, sum(e.salary)
from employee e, department d
where e.department_id=d.department_id
group by d.department_id, d.name
having sum(e.salary) = ( select max(sum(salary)) from employee group by departme
nt_id)
/

--TEMA NRO. 3
--Se desea conocer cuntos empleados supervisa cada jefe. Para ello se necesita o
btener un listado con el cdigo y
--el nombre de cada jefe, junto al nmero de empleados que supervisa directamente.
Como pueden haber
--empleados sin jefe, para stos se indicar slo el nmero de ellos, y los valores rest
antes (cdigo y nombre del --jefe) se dejarn --como nulos.

-- Todos los empleados que son jefes


select employee_id, first_name||' '||last_name nombre
from employee
where employee_id in (select distinct(manager_id) from employee)
/
select vista.codigo, vista.nombre, count(e.employee_id)
from employee e, (select employee_id codigo, first_name||' '||last_name nombre
from employee
where employee_id in (select distinct(manager_id) from employ
ee)) vista
where e.manager_id = vista.codigo
group by vista.codigo, vista.nombre
/

--TEMA NRO. 4
--Lista los empleados que tengan el mayor salario de su departamento, mostrando
el nombre del empleado, su salario y el nombre del --departamento.
select e.first_name||' '||last_name Nombre, e.salary, d.name Dpto, vista.total
from employee e, department d, (select department_id, max(salary) total from emp
loyee group by department_id) vista
where e.department_id=d.department_id
and d.department_id=vista.department_id
and e.salary=vista.total
/

--TEMA NRO. 5
--Para los empleados que tengan como jefe a un empleado con cdigo mayor que el su
yo, obtener
--a) los que reciben de salario mas de $1000 y menos de $2000, o
--b) que estn en el departamento 30.
select *
from employee
where employee_id < manager_id
and (department_id=30 or salary between 1000 and 2000)
/
--TEMA NRO. 6
--Hallar el nombre del ltimo empleado por orden alfabtico.
select first_name||' '||last_name
from employee
where substr(first_name,1,1) = (select max(substr(first_name,1,1)) from employee
)
/

--TEMA NRO. 7
--Considerando empleados con salario menor de $5000, hallar la media de los sala
rios de los departamentos cuyo salario mnimo
--supera a $900. Mostrar tambin el cdigo y el nombre de los departamentos.
select e.department_id, d.name, avg(e.salary), min(e.salary)
from employee e, department d
where e.salary < 5000
and e.department_id=d.department_id
group by e.department_id, d.name
having min(salary) > 900
/

--TEMA NRO. 8
--Qu empleados trabajan en ciudades de ms de cinco letras? Ordenar el resultado inv
ersamente por ciudades y ascendentemente por --los nombres de los empleados.
select employee_id, first_name, last_name, l.regional_group
from employee e, department d, location l
where length(l.regional_group)>5
and e.department_id=d.department_id
and d.location_id=l.location_id
order by 4 desc, 2
/

--TEMA NRO. 9
--Indicar para cada empleado el porcentaje que supone su comisin sobre su salario
, ordenando el resultado por el nombre del mismo.
select employee_id,
first_name,
last_name,
nvl(commission,0),
salary,
nvl(round(((commission/salary)*100),2),0)||' % ' Porcentaje
from employee
order by 6 desc
/
--TEMA NRO. 10
--Hallar los datos de los empleados que, o bien su apellido empieza por A y su s
alario es superior a $1000, o bien reciben comisin y --trabajan en el departament
o 30.
select *
from employee
where (last_name like 'A%' and salary>1000)
or (department_id=30 and (commission is not null and commission != 0 )
)
/

--TEMA NRO. 11
--Suponiendo que el ao prximo la subida del sueldo de cada empleado ser del 6%, y e
l siguiente del 7%, halla los nombres y el --salario actual, del ao prximo y del s
iguiente, de cada empleado. Indique dems con un "SI" o un "NO",si el empleado tie
ne comision.

select first_name||' '||last_name Empleado,


salary,
(salary * 1.06) Salario_2011,
((salary * 1.06) * 1.07) Salario_2012,
commission,
decode(nvl(commission,0),0,'NO','SI')
from employee
/

También podría gustarte