PRACTICA #4
Gestión y Consulta de Datos
con SQL
Instructor: Elvin German
Subconsultas
Obligatorio
Tablas utilizadas: EMPLEADOS, DEPARTAMENTOS, PEDIDOS, PRODUCTOS y
CLIENTES.
1. Listar los nombres y códigos de los departamentos en los que haya
empleados.
SELECT DEP1.DEP_NO, DNOMBRE
FROM DEPARTAMENTOS DEP1
WHERE DEP1.DEP_NO = ANY (SELECT D2.DEP_NO FROM EMPLEADOS D2)
SELECT * FROM DEPARTAMENTOS
2. Obtener los datos del pedido más reciente.
SELECT *
FROM PEDIDOS
WHERE FECHA_PEDIDO = (SELECT MAX(FECHA_PEDIDO) FROM PEDIDOS);
3. Pare el departamento de VENTAS, visualizar para cada oficio, la suma de los
salarios de los empleados.
SELECT OFICIO, SUM(SALARIO)
FROM EMPLEADOS
WHERE DEP_NO = (
SELECT DEP_NO
FROM DEPARTAMENTOS
WHERE DNOMBRE='VENTAS'
)
GROUP BY OFICIO;
4. Obtener los datos del producto con más unidades en los pedidos de los clientes.
SELECT * FROM PRODUCTOS
WHERE PRODUCTO_NO = (SELECT PRODUCTO_NO FROM PEDIDOS GROUP BY PRODUCTO_NO
HAVING SUM(UNIDADES) = (SELECT TOP 1 SUM(UNIDADES) FROM PEDIDOS GROUP BY
PRODUCTO_NO ORDER BY 1 DESC))
5. Seleccionar los datos de los pedidos correspondientes al realizado con mayor
cantidad de unidades del mismo producto, visualizándolo para cada producto.
SELECT PED.*, [Link]
FROM PEDIDOS PED
JOIN PRODUCTOS PRO ON PED.PRODUCTO_NO = PRO.PRODUCTO_NO
WHERE PED.PEDIDO_NO IN
(
SELECT TOP 1 PEDIDO_NO FROM PEDIDOS
WHERE PRODUCTO_NO = PED.PRODUCTO_NO
ORDER BY UNIDADES DESC, FECHA_PEDIDO DESC
)
ORDER BY PED.PRODUCTO_NO
6. 6. Seleccionar los empleados de la empresa que tengan igual comisión que la media
de su oficio.
SELECT PR.PRODUCTO_NO, [Link], COUNT(PE.PRODUCTO_NO) AS 'NUMERO DE
PEDIDO',
ISNULL(SUM([Link]),0) AS 'TOTAL DE PEDIDOS', PR.PRECIO_ACTUAL
FROM PRODUCTOS PR
LEFT JOIN PEDIDOS PE
ON PR.PRODUCTO_NO = PE.PRODUCTO_NO
GROUP BY PR.PRODUCTO_NO, [Link],PR.PRECIO_ACTUAL