You are on page 1of 6

Ejercicios TEMA 9

Bases de Datos
CFGS Administración de Sistemas Informáticos en Red

Informática
CIFP Juan de Colonia (Burgos)

Curso 2010-2011

Jose Carlos Fernandez Rodriguez

20 de Abril de 2011
Ejercicios TEMA 9 2/6

Índice de contenido
1 Ejercicios Group By ..................................................................................................................................... 3

Jose Carlos Fernandez Rodriguez


Ejercicios TEMA 9 3/6

1 Ejercicios Group By
1.- De todo el personal asignado a los actuales departamentos, seleccionar toda la información acerca
del personal y sus respectivos departamentos
select personal.*, departamento.* from departamento, personal where departamento.dept=personal.dept

2.-Para cada miembro del personal cuyo salario anual exceda de 1000 visualizar su nombre, sueldo,
código departamento y edificio de destino:
select personal.*, dedif from departamento, personal where departamento.dept=personal.dept and
sueldo>1000

3.- Para cada curso con una tarifa superior a 175, mostrar el nombre del curso, tarifa y número de
facultativo del jefe responsable del curso, visualizando en orden ascendente por nombre de curso.
select cnombre, ctarifa, djefe from curso, departamento where cdept=dept and ctarifa>175 order by
cnombre

4.- Visualizar el nombre y cargo de cada miembro del personal que trabaje en el edificio de
humanidades, utilizar INNER JOIN:
select enombre, cargo from departamento inner join personal on departamento.dept=personal.dept and
dedificio like 'HU'

5.-Para cada departamento que ofrece cursos, visualizar el identificador de departamento junto con la
tarifa media de los cursos que este ofrece y el sueldo medio de los profesores del claustro que pueden
impartir dichos cursos(los del departamento). Clasificar la salida por identificador de departamento.
select departamento.dept, avg(ctarifa), avg(esueldo) from departamento, curso, personal where
departamento.dept=curso.cdept and personal.dept=departamento.dept and cdept is not null group by
departamento.dept

6.- Para cada departamento que ofrezca cursos determinar el valor medio de la tarifa de todos los
cursos que tengan tres créditos ofrecidos por cada departamento. Visualizar ordenado
ascendentemente por departamento.
select departamento.dept, avg(ctarifa), creditos from departamento, curso where
departamento.dept=curso.cdept and cdept is not null group by departamento.dept, creditos having creditos>3

7.- Para cada valor distinto de tarifa determinar el número total de créditos para los cursos que tengan
ese valor de tarifa. Ordenar descendentemente por tarifa.
select sum(creditos) from curso group by ctarifa order by ctarifa desc

8.- Para todos los departamentos excepto el de Teología, que tengan una tarifa media de sus cursos
mayor que 100, obtener su identificación y su tarifa media.

Jose Carlos Fernandez Rodriguez


Ejercicios TEMA 9 4/6

select dept, avg(ctarifa) from departamento, curso where dept not like 'THEO' and
departamento.dept=curso.cdept group by dept having avg(ctarifa)>100

9.- Hallar las tarifas media, máxima y mínima por crédito dentro de cada departamento solo para
aquellos grupos con tarifa mínima positiva.
select avg(ctarifa), max(ctarifa), min(ctarifa) from curso group by cdept, creditos having min(ctarifa)>0

10.- Para cada departamento el número de profesores del claustro que pertenecen a el y el número de
despacho
select count(fno), fdept, ddespacho from claustro, departamento where dept=fdept group by fdept,
ddespacho

11.- Buscar el nombre del departamento con menos profesores. Pensar que puede haber más de uno
con el mínimo número de profesores.
select fdept, count(*) from claustro group by fdept having count(*) in ( select top 1 count(fno) from
claustro group by fdept order by count(fno))

12.-visualizar todos los oficios y el número de empleados de la empresa que los desempeñan:
select oficio, count(emp_no) from emple group by oficio

13.-Visualizar todos los oficios y el numero de empleados de la empresa que lo desempeñan siempre
que sean mas de 1.
select oficio, count(emp_no) from emple group by oficio having count(emp_no) >1

14.- Obtener el número de empleados de la empresa que realizan cada oficio en cada departamento
select oficio, dept_no, count(emp_no) from emple group by oficio, dept_no

16.-Obtener los salarios medios por departamento de los vendedores y cuantos hay en cada
departamento, siempre que el salario medio sea mayor 1200
select dept_no, avg(salario), count(emp_no) from emple where oficio like 'VENDEDOR' group by dept_no
having avg(salario)>1200

17.-Visualizar el número de departamento con mayor salario medio de sus empleados, visualizando
también el valor del salario medio correspondiente
select top(1) dept_no, avg(salario) from emple group by dept_no having max(salario) > (select avg(salario)
from emple)

19.-Visualizar el apellido de los empleados del departamento 10 y cuyo oficio sea igual a alguno del
departamento VENTAS

Jose Carlos Fernandez Rodriguez


Ejercicios TEMA 9 5/6

select apellido from emple where dept_no=10 and oficio in (select oficio from emple, depart where
emple.dept_no=depart.dept_no and dnombre like 'VENTAS')

20.-Buscar el nombre del departamento donde se cobra el mayor salario


select top(1) max(salario), dnombre from emple, depart where emple.dept_no=depart.dept_no group by
dnombre

21.-Buscar los datos de los empleados cuyo salario es menor que la media de su departamento.
Consulta correlacionada
select emp_no, apellido, oficio, dept_no, salario from emple where salario < (select avg(salario) from emple)

22.- El nombre del departamento donde menos se paga en sueldos y comisiones.


select top(1) min(salario), min(comision), dnombre, depart.dept_no from depart, emple where
emple.dept_no=depart.dept_no group by depart.dept_no, dnombre

25.- Obtener un listado con el número y nombre de los clientes atendidos por el vendedor Paul Cruz
select nombre, num_clie, count(num_clie) from clientes, repventas where nombre like 'Paul Cruz' group by
nombre, num_clie

26.-Visualizar para el cliente Zetacorpiss sus pedidos, con su fecha y el número de producto pedido.
select empresa, count(num_pedido), fecha_pedido, producto from clientes, pedidos where
clientes.num_clie=pedidos.clie and empresa like 'Zetacorp' group by empresa

27.-Buscar los clientes cuyo limite de crédito sea menor que el limite medio de todos los clientes,
indicando su número, nombre y limite de crédito
select num_clie, empresa, lim_credito from clientes where lim_credito < (select avg(lim_credito) from
clientes) group by num_clie, empresa, lim_credito order by num_clie asc

28.-Visualizar los datos del producto mas caro


select * from productos where precio= (select max(precio) from productos)

29.-Visualizar los datos de los clientes que han pedido un extractor


select num_clie, empresa, lim_credito, descripcion from clientes, productos, pedidos where
clientes.num_clie=pedidos.clie and pedidos.producto=productos.id_producto and descripcion like 'Extractor'

30.-Visualizar los datos de los representantes de ventas que tengan mas de 2 clientes
select nombre, num_empl, count(num_clie) from repventas, clientes where
clientes.rep_clie=repventas.num_empl group by num_empl, nombre having count(num_clie)>2

Jose Carlos Fernandez Rodriguez


Ejercicios TEMA 9 6/6

31.-Visualizar los datos de los representantes de ventas cuyos clientes no han hecho ningun pedido
select repventas.nombre, repventas.edad, repventas.num_empl, repventas.contrato, pedidos.cant from
pedidos, repventas, clientes where pedidos.rep=repventas.num_empl and
clientes.rep_clie=repventas.num_empl and clientes.num_clie <> pedidos.clie group by nombre, edad,
num_empl, contrato, cant

32.-Obtener un listado de clientes junto con el numero y el nombre de su representante de ventas


select nombre, empresa, num_clie from clientes, repventas where clientes.rep_clie=repventas.num_empl
group by nombre, empresa, num_clie

33.- Listar todos los pedidos realizados con la descripción del producto y la empresa del cliente en
lugar de los números.
select empresa, num_pedido, descripcion, pedidos, repventas, clientes, productos where
pedidos.rep=repventas.num_empl and clientes.rep_clie=repventas.num_empl and fab=id_fab

34.-Todas las empresas clientes que trabajan con la oficina de New York. Asumimos que son los
clientes cuyo representante de ventas tiene como director al de la oficina de New York.
select empresa, ciudad from oficinas, repventas, clientes where oficinas.oficina=repventas.oficina_rep and
oficinas.dir=repventas.director and clientes.rep_clie=repventas.num_empl and ciudad like 'New York'

Jose Carlos Fernandez Rodriguez

You might also like