Ejercicios Resueltos de Consultas SQL Avanzadas: Joins, Agregaciones y Subconsultas
Clasificado en Diseño e Ingeniería
Escrito el en
español con un tamaño de 2,5 KB
Resolución de Consultas SQL
b) Cantidad de empleados por oficina
Listado que muestra la cantidad de empleados que hay en cada oficina que tenga más de 2 empleados.
SELECT CodigoOficina, COUNT(*) AS empleados
FROM Empleados
GROUP BY CodigoOficina
HAVING COUNT(*) > 2;c) Cantidad total vendida del producto más caro
Cálculo de la suma total de ventas para el producto con el precio más elevado.
SELECT SUM(dp.Cantidad * dp.PrecioUnidad) AS total
FROM DetallePedido dp, Productos pr
WHERE dp.CodigoProducto = pr.CodigoProducto
AND pr.PrecioVenta = (SELECT MAX(PrecioVenta) FROM Productos);e) Información de clientes y representantes en San Francisco
Listado que muestra el nombre de los clientes, su teléfono, el nombre de su empleado representante de ventas y el teléfono de la oficina del representante. Filtrado para clientes de USA cuya oficina esté en la ciudad de San Francisco.
SELECT c.NombreCliente, c.Telefono, e.Nombre, o.Telefono
FROM Clientes c, Empleados e, Oficinas o
WHERE c.CodigoEmpleadoRepVentas = e.CodigoEmpleado
AND c.CodigoOficina = o.CodigoOficina
AND c.Pais = 'USA'
AND o.Ciudad = 'San Francisco';f) Listado de empleados y código postal de su oficina
Listado con el nombre de todos los empleados, indicando para cada uno de ellos el código postal de su oficina. Si algún empleado no tiene oficina, se mostrará 'no tiene' en lugar del código postal.
SELECT e.Nombre,
IFNULL(o.CodigoPostal, 'no tiene') AS codigo_postal
FROM Empleados e
LEFT JOIN Oficinas o
ON e.CodigoOficina = o.CodigoOficina;g) Clientes con pagos superiores a la media
Código de los clientes y cantidad total pagada por cada uno, filtrando solo aquellos clientes que han pagado más que la media.
SELECT CodigoCliente, SUM(Cantidad) AS total
FROM Pagos
GROUP BY CodigoCliente
HAVING SUM(Cantidad) >
(
SELECT AVG(Cantidad) FROM Pagos
);h) Total pagado por clientes con representante en Madrid
Cantidad total pagada por cada cliente cuyo representante de ventas tiene su oficina en Madrid.
SELECT c.CodigoCliente, SUM(p.Cantidad) AS total
FROM Clientes c, Pagos p, Empleados e, Oficinas o
WHERE c.CodigoCliente = p.CodigoCliente
AND c.CodigoEmpleadoRepVentas = e.CodigoEmpleado
AND e.CodigoOficina = o.CodigoOficina
AND o.Ciudad = 'Madrid'
GROUP BY c.CodigoCliente;