Sei sulla pagina 1di 4

UNIVERSIDAD PRIVADA DOMINGO SAVIO

ACTIVIDAD #5
SUBCONSULTAS SERVER

ALUMNO:
 MARIO A. SAAVEDRA MÉRIDA

DOCENTE: Ing. WILMER CAMPOS

Santa Cruz - Bolivia


Actividad #2 Administración de Base de Datos

Actividad 5. Las subconsultas SQL


/*Los ejercicios que te proponemos a continuación se pueden resolver de varias
maneras,
intenta resolverlos utilizando subconsultas ya que de eso trata el tema,
además un mismo ejercicio lo puedes intentar resolver de diferentes maneras
utilizando
distintos tipos de condiciones.*/

/*1 Listar los nombres de los clientes que tienen asignado el representante
Alvaro Jaumes (suponiendo que no puede haber representantes duplicados con el
mismo nombre y apellido).*/
SELECT clientes.nombre
FROM clientes INNER JOIN empleados ON clientes.repclie = empleados.numemp
WHERE empleados.nombre='Alvaro Jaumes'

SELECT nombre
FROM clientes
WHERE repclie = ANY (SELECT numemp FROM empleados WHERE nombre = 'Alvaro Jaumes'
);

/*2 Listar los vendedores (numemp, nombre y nº de oficina) que trabajan en


oficinas "buenas", es decir las que tienen ventas superiores a su objetivo.*/

SELECT numemp, nombre, empleados.oficina


FROM empleados INNER JOIN oficinas ON empleados.oficina = oficinas.oficina
WHERE oficinas.ventas > oficinas.objetivo

SELECT numemp, nombre, oficina


FROM empleados
WHERE oficina IN ( SELECT oficina FROM oficinas WHERE ventas > objetivo );

SELECT numemp, nombre, oficina


FROM empleados
WHERE oficina = ANY ( SELECT oficina FROM oficinas WHERE ventas > objetivo );

/*3 Listar los vendedores que no trabajan en oficinas dirigidas por el empleado
108.*/

SELECT numemp, nombre, oficina


FROM empleados
WHERE NOT EXISTS ( SELECT * FROM oficinas WHERE empleados.oficina =
oficinas.oficina AND dir = 108)

SELECT numemp, nombre, oficina


FROM empleados
WHERE oficina NOT IN ( SELECT oficina FROM oficinas WHERE dir = 108)

/*4 Mostrar todas las oficinas cuyos objetivos de ventas superan el promedio de
los objetivos planteados en todas las oficinas.*/

SELECT oficina
FROM oficinas
WHERE oficinas.ventas >(SELECT AVG(objetivo)FROM oficinas)

/*5 Mostrar numemp, nombre de los empleados con el importe máximo de todos los
pedidos en los
cuales han sido representante de ventas.*/
SELECT e.numemp,e.nombre,MAX(importe) AS Max_Imp
FROM empleados e INNER JOIN pedidos ON numemp=rep
WHERE e.numemp IS NOT NULL
GROUP BY e.numemp,e.nombre

MARIO A. SAAVEDRA MERIDA pág. 1


Actividad #2 Administración de Base de Datos

SELECT numemp, nombre, (SELECT MAX(importe) FROM pedidos WHERE numemp = rep) AS
impmax
FROM empleados
WHERE (SELECT MAX(importe) FROM pedidos WHERE numemp = rep) IS NOT NULL

/*6 Listar los datos de los clientes y de cada uno mostrar el importe máximo de
todas sus líneas de pedidos que ha realizado.*/

SELECT numclie,nombre,MAX(importe) AS Max_Imp


FROM clientes INNER JOIN pedidos ON numclie= clie
GROUP BY numclie,nombre

SELECT numclie,nombre, (SELECT MAX(importe) FROM pedidos WHERE numclie = clie) AS


imp_maximo
FROM clientes WHERE (SELECT MAX(importe)
FROM pedidos WHERE numclie = clie) IS NOT NULL

Actividad 6. SQL4: Actualización de datos con SQL

Como en estos ejercicios vamos a modificar los valores almacenados en la base de datos,
es conveniente guardar antes una copia de las tablas y sobre ellas se realizarán los cambios
de datos. En los cuatro primeros ejercicios crearemos una copia de los datos almacenados
para luego poder recuperar los valores originales.

/*1 Crear una tabla (llamarla nuevaempleados) que contenga las filas de la tabla
empleados.*/
SELECT * INTO nuevaempleados FROM empleados
SELECT * FROM nuevaempleados

/*2 Crear una tabla (llamarla nuevaoficinas) que contenga las filas de la tabla
oficinas.*/
SELECT * INTO nuevaoficinas FROM oficinas
SELECT * FROM nuevaoficinas

/*3 Crear una tabla (llamarla nuevaproductos) que contenga las filas de la tabla
productos.*/
SELECT * INTO nuevaproductos FROM productos
SELECT * FROM nuevaproductos

/*4 Crear una tabla (llamarla nuevapedidos) que contenga las filas de la tabla
pedidos.*/
SELECT * INTO nuevapedidos FROM pedidos
SELECT * FROM nuevapedidos

/*5 En la tabla nuevaproductos subir un 5% el precio de todos los productos del


fabricante aci.*/
UPDATE nuevaproductos
SET precio=(precio*0.05)+precio
WHERE idfab = 'aci'

/*6 En la tabla nuevaoficinas añadir una nueva oficina para la ciudad de Madrid,
con el número de oficina 30,
con un objetivo de 100000 y región Centro.*/

INSERT INTO nuevaoficinas VALUES (30, 'Madrid', 'centro', NULL, 100000, 0)

MARIO A. SAAVEDRA MERIDA pág. 2


Actividad #2 Administración de Base de Datos

/*7 En la tabla nuevaempleados insertar un nuevo empleado con código 210 llamado
Mario Lopez, de 50 años,
sin oficina asignada, título representante, contratado en fecha 21/02/2000, con
el jefe Jose Gonzales,
cuota de 200000 y ventas cero.*/

INSERT INTO nuevaempleados VALUES (210, 'Mario Lopez', 50, NULL,


'representante', 21/02/2000, 104, 200000, 0)

/*8 En la tabla nuevaempleados cambiar los empleados de la oficina 21 a la


oficina 30.*/
UPDATE nuevaempleados SET oficina = 30 WHERE oficina = 21
/*9 De la tabla nuevapedidos eliminar los pedidos del empleado 105.*/
DELETE FROM nuevapedidos WHERE rep = 105

/*10 Eliminar las oficinas que no tengan director, de la tabla nuevaoficinas.*/


DELETE FROM nuevaoficinas WHERE dir IS NULL

/*11 A los empleados de la oficina 30 asignarles la oficina 21, de la tabla


nuevaempleados.*/

UPDATE nuevaempleados SET oficina = 21 WHERE oficina = 30

/*12 En la tabla nuevaproductos descontar el 10% al precio de todos los


productos del fabricante bic.*/
UPDATE nuevaproductos
SET precio=precio-(precio*0.10)
WHERE idfab = 'bic'

MARIO A. SAAVEDRA MERIDA pág. 3

Potrebbero piacerti anche