I.E.S. Puerto de la Cruz 1º ASIR - GTB Curso 2013/14
EJERCICIOS PRÁCTICOS SQL. - SOLUCIONES
Utilizando el siguiente esquema de la base de datos “jardinería”
Codifica en SQL (MySQL) sentencias para obtener la siguiente información:
I.E.S. Puerto de la Cruz 1º ASIR - GTB Curso 2013/14
Mostrar el nombre (NombreCliente) de los clientes españoles.
¿Qué mostrar? ¿Dónde buscar? Filtro Agrupar
NombreCliente Clientes Pais = „Espa??a‟
Pais = „Spain‟
SELECT clientes.NombreCliente
FROM clientes
WHERE clientes.pais IN („Espa??a‟,‟Spain‟);
(o También)
SELECT clientes.NombreCliente
FROM clientes
WHERE (clientes.pais = „Espa??a‟) OR
(clients.pais = ‟Spain‟);
I.E.S. Puerto de la Cruz 1º ASIR - GTB Curso 2013/14
Mostrar cuántos clientes tienen las ciudades cuyo nombre (Ciudad) contiene
la palabra “del”.
¿Qué mostrar? ¿Dónde buscar? Filtro Agrupar
Cuántos clientes
COUNT(CodigoCliente)
Clientes Ciudad contiene „ del „
Ciudad Like „% del %„
las ciudades: Ciudad Ciudad
SELECT clientes.Ciudad ,
COUNT(clientes.CodigoCliente) AS NumClientes
FROM clientes
WHERE clientes.Ciudad LIKE „% del %‟
GROUP BY clientes.Ciudad;
Mostrar cuántos clientes tienen las ciudades cuyo nombre (Ciudad) empieza
por M.
¿Qué mostrar? ¿Dónde buscar? Filtro Agrupar
Cuántos clientes
COUNT(CodigoCliente)
Clientes Ciudad empieza por „M„
Ciudad Like „M%„
las ciudades: Ciudad Ciudad
SELECT clientes.Ciudad ,
COUNT(clientes.CodigoCliente) AS NumClientes
FROM clientes
WHERE clientes.Ciudad LIKE „M%‟
GROUP BY clientes.Ciudad;
I.E.S. Puerto de la Cruz 1º ASIR - GTB Curso 2013/14
Mostrar el código de empleado (CodigoEmpleadoRepVentas) y el número de
clientes al que atiende cada empleado.
¿Qué mostrar? ¿Dónde buscar? Filtro Agrupar
CodigoEmpleadoRepVentas Clientes CodigoEmpleadoRepVentas
Número de clientes
COUNT(CodigoCliente)
SELECT clientes.CodigoEmpleadoRepVentas,
COUNT(CodigoCliente) AS NumClientes
FROM clientes
GROUP BY clientes.CodigoEmpleadoRepVentas;
I.E.S. Puerto de la Cruz 1º ASIR - GTB Curso 2013/14
Mostrar cuál fue el mayor pago (Cantidad) efectuado por los clientes en el año
2008.
¿Qué mostrar? ¿Dónde buscar? Filtro Agrupar
Mayor pago (Cantidad)
MAX(Cantidad)
Pagos Año 2008
FechaPago = ??/??/2008
YEAR(FechaPago)=2008
SELECT MAX(Cantidad)
FROM pagos
WHERE Year(FechaPago)=‟2008‟;
Mostrar cuál fue el pago medio en 2006.
¿Qué mostrar? ¿Dónde buscar? Filtro Agrupar
Pago medio (Cantidad)
AVG(Cantidad)
Pagos Año 2006
FechaPago = ??/??/2006
YEAR(FechaPago)=2006
SELECT AVG(Cantidad)
FROM pagos
WHERE Year(FechaPago)=‟2006‟;
I.E.S. Puerto de la Cruz 1º ASIR - GTB Curso 2013/14
Mostrar cuántos clientes tiene cada país.
¿Qué mostrar? ¿Dónde buscar? Filtro Agrupar
Cuántos clientes
COUNT(CodigoCliente)
Clientes
Cada país: País Pais
SELECT clientes.Pais,
COUNT(clientes.CodigoCliente) AS NumClientes
FROM clientes
GROUP BY Pais;
I.E.S. Puerto de la Cruz 1º ASIR - GTB Curso 2013/14
Mostrar el nombre (Nombre), apellidos (Apellido1, Apellido2) y puesto
(Puesto) de aquellos empleados que no ocupen el puesto de “Representante de
ventas”.
¿Qué mostrar? ¿Dónde buscar? Filtro Agrupar
Nombre Empleados No ocupen puesto
„Representante Ventas‟
Apellido1 NOT Puesto =
„Representante Ventass‟
Apellido2
Puesto
SELECT empleados.Nombre,
empleados.Apellido1,
empleados.Apellido2,
empleados.Puesto
FROM empleados
WHERE NOT empleados.Puesto=‟Representante Ventas‟;
I.E.S. Puerto de la Cruz 1º ASIR - GTB Curso 2013/14
Mostrar cuántas oficinas tiene la ciudad de Madrid.
¿Qué mostrar? ¿Dónde buscar? Filtro Agrupar
Cuántas oficinas
COUNT(CodigoOficina)
Oficinas Ciudad de Madrid
Ciudad = „Madrid‟
(opcional)
Ciudad
(opcional)
Ciudad
SELECT COUNT(oficinas.CodigoOficina) AS NumOficinas
FROM oficinas
WHERE oficinas.Ciudad=‟Madrid‟;
Mostrar cuántos clientes tiene la ciudad de Madrid.
¿Qué mostrar? ¿Dónde buscar? Filtro Agrupar
Cuántas clientes
COUNT(CodigoCliente)
Clientes Ciudad de Madrid
Ciudad = „Madrid‟
(opcional)
Ciudad
(opcional)
Ciudad
SELECT COUNT(clientes.CodigoCliente) AS NumClientes
FROM clientes
WHERE clientes.Ciudad=‟Madrid‟;
I.E.S. Puerto de la Cruz 1º ASIR - GTB Curso 2013/14
Mostrar los distintos estados por los que puede pasar un pedido.
¿Qué mostrar? ¿Dónde buscar? Filtro Agrupar
Distintos estados
Estado
Pedidos Estado
SELECT DISTINCT pedidos.Estado
FROM pedidos;
O también
SELECT pedidos.Estado
FROM pedidos
GROUP BY pedidos.Estado;
I.E.S. Puerto de la Cruz 1º ASIR - GTB Curso 2013/14
Mostrar el nombre completo del empleado (nombre y apellidos en una sola
columna), el puesto (Puesto), el código de la oficina (CodigoOficina) en la que
trabaja y la ciudad (Ciudad) y país (Pais) de dicha oficina.
¿Qué mostrar? ¿Dónde buscar? Filtro Agrupar
Nombre completo del
empleado una columna
CONCAT(Nombre,
Apellido1, Apellido2)
Empleados
Puesto Empleados
CodigoOficina Empleados
Ciudad Oficinas
Pais Oficinas
SELECT CONCAT(empleados.Nombre, “ “, empleados.Apellido1, “ “,
empleados.Apellido2) AS NombreCompleto,
empleados.Puesto,
empleados.CodigoOficina,
oficinas.Ciudad,
oficinas.Pais
FROM empleados INNER JOIN oficinas ON
empleados.CodigoOficina=oficinas.CodigoOficina;
……
I.E.S. Puerto de la Cruz 1º ASIR - GTB Curso 2013/14
Mostrar cuál fue el primer y último pago (FechaPago) que hizo cada cliente.
Debe mostrar también el código del cliente (CodigoCliente), nombre del cliente
(NombreCliente).
¿Qué mostrar? ¿Dónde buscar? Filtro Agrupar
Primer pago
MIN(FechaPago)
Pagos
Último pago
MAX(FechaPago)
Pagos
CodigoCliente Pagos CodigoCliente
NombreCliente Clientes (opcional)
NombreCliente
SELECT pagos.CodigoCliente,
clientes.NombreCliente,
MIN(pagos.FechaPago) AS PrimerPago,
MAX(pagos.FechaPago) AS UltimoPago
FROM pagos INNER JOIN clientes ON
pagos.CodigoCliente=clientes.CodigoCliente
GROUP BY pagos.CodigoCliente;
I.E.S. Puerto de la Cruz 1º ASIR - GTB Curso 2013/14
Mostrar el número de pedido (CodigoPedido), fecha del pedido
(FechaPedido), fecha esperada (FechaEsperada), fecha de entrega
(FechaEntrega), código de cliente (CodigoCliente) y nombre del cliente
(NombreCliente) de los pedidos en estado “Pendiente” que han sido
entregados (tienen fecha de entrega).
¿Qué mostrar? ¿Dónde buscar? Filtro Agrupar
CodigoPedido Pedidos Estado=„Pendiente‟
FechaPedido Pedidos
FechaEsperada Pedidos
FechaEntrega Pedidos Tienen algo en
FechaEntrega
NOT FechaEntrega IS
NULL
CodigoCliente Pedidos
NombreCliente Clientes
SELECT pedidos.CodigoPedido,
pedidos.FechaPedido,
pedidos.FechaEsperada,
pedidos.FechaEntrega,
pedidos.CodigoCliente,
clientes.NombreCliente
FROM pedidos INNER JOIN clientes ON
pedidos.CodigoCliente = clientes.CodigoCliente
WHERE (pedidos.Estado = „Pendiente‟) AND
(NOT Pedidos.FechaEntrega IS NULL);
I.E.S. Puerto de la Cruz 1º ASIR - GTB Curso 2013/14
Mostrar el número de pedido (CodigoPedido), fecha del pedido
(FechaPedido), fecha esperada (FechaEsperada), fecha de entrega
(FechaEntrega), código de cliente (CodigoCliente) y nombre del cliente
(NombreCliente) de los pedidos en estado “Rechazado” que han sido
entregados (tienen fecha de entrega).
¿Qué mostrar? ¿Dónde buscar? Filtro Agrupar
CodigoPedido Pedidos Estado=„Rechazado‟
FechaPedido Pedidos
FechaEsperada Pedidos
FechaEntrega Pedidos Tienen algo en
FechaEntrega
NOT FechaEntrega IS
NULL
CodigoCliente Pedidos
NombreCliente Clientes
SELECT pedidos.CodigoPedido,
pedidos.FechaPedido,
pedidos.FechaEsperada,
pedidos.FechaEntrega,
pedidos.CodigoCliente,
clientes.NombreCliente
FROM pedidos INNER JOIN clientes ON
pedidos.CodigoCliente = clientes.CodigoCliente
WHERE (pedidos.Estado = „Rechazado‟) AND
(NOT Pedidos.FechaEntrega IS NULL);
I.E.S. Puerto de la Cruz 1º ASIR - GTB Curso 2013/14
Mostrar un listado de los 5 productos que más beneficios producen a la
empresa en cada pedido. Deben mostrar el código del producto
(CodigoProducto), nombre del producto (Nombre) y el beneficio sobre cada
unidad de producto pedido.
Beneficio = (detallepedidos.PrecioUnidad – productos.PrecioProveedor)
(pista: Usar el filtro LIMIT de MySQL)
¿Qué mostrar? ¿Dónde buscar? Filtro Agrupar
CodigoProducto Detallepedidos CodigoProducto
Nombre Productos Nombre
Beneficio =
PrecioUnidad -
PrecioProveedor
Detallepedidos
Productos
Beneficio
AGRUPAR para evitar que el mismo producto ocupe los 5 primeros puestos
ORDENAR DESCENDENTE para que aparezcan primero los mayores valores
de beneficio.
LIMITAR a los 5 primeros
SELECT detallepedidos.CodigoProducto,
productos.Nombre,
(detallepedidos.PrecioUnidad – productos.PrecioProveedor) AS Benef
FROM detallepedidos INNER JOIN productos ON
detallepedidos.CodigoProducto = productos.CodigoProducto
GROUP BY detallepedidos.CodigoProducto,
productos.Nombre,
Benef
ORDER BY Benef DESC LIMIT 5;
Probar a quitar el agrupamiento o a agrupar sólo por CodigoProducto
I.E.S. Puerto de la Cruz 1º ASIR - GTB Curso 2013/14
Mostrar el número de pedido (CodigoPedido), código de cliente
(CodigoCliente), nombre de cliente (NombreCliente), teléfono del cliente
(Telefono), estado del pedido (Estado), fecha esperada (FechaEsperada) y
fecha de entrega (FechaEntrega) de los pedidos cuya fecha de entrega ha sido
al menos tres días después de la fecha esperada.
(pista: Usar la función addDate() de MySQL)
¿Qué mostrar? ¿Dónde buscar? Filtro Agrupar
CodigoPedido Pedidos
CodigoCliente Pedidos
NombreCliente Clientes
Telefono Clientes
Estado Pedidos
FechaEsperada Pedidos
FechaEntrega Pedidos FechaEntrega >=
FechaEsperada + 3
SELECT pedidos.CodigoPedido,
pedidos.CodigoCliente,
clientes.NombreCliente,
clientes.Telefono,
pedidos.Estado,
pedidos.FechaEsperada,
pedidos.FechaEntrega
FROM pedidos INNER JOIN clientes ON
pedidos.CodigoCliente = clientes.CodigoCliente
WHERE pedidos.FechaEntrega>=addDate(pedidos.FechaEsperada,3);
……………
I.E.S. Puerto de la Cruz 1º ASIR - GTB Curso 2013/14
Mostrar las gamas de los productos (DescripcionTexto) y el importe total que
suman los productos que tenemos en stock (CantidadEnStock * PrecioVenta)
de cada gama de producto.
¿Qué mostrar? ¿Dónde buscar? Filtro Agrupar
DescripcionTexto GamasProductos DescripcionTexto
ImporteTotal =
SUM(
CantidadEnStock *
PrecioVenta)
Productos
Productos
SELECT gamasproductos.DescripcionTexto,
SUM(productos.CantidadEnStock*productos.PrecioVenta) AS ImporteTotal
FROM productos INNER JOIN gamasproductos ON
productos.Gama=gamasproductos.Gama
GROUP BY gamasproductos.DescripcionTexto;
I.E.S. Puerto de la Cruz 1º ASIR - GTB Curso 2013/14
Mostrar las gamas de los productos (Gama y DescripcionTexto) y el importe
total que suman los productos que tenemos en stock de cada gama de producto.
(Importe = (CantidadEnStock * PrecioVenta)). Mostrar sólo las gamas de
productos en las que el importe total supere el valor de 10000.
¿Qué mostrar? ¿Dónde buscar? Filtro Agrupar
Gama GamasProductos Gama
DescripcionTexto GamasProductos
ImporteTotal =
SUM(
CantidadEnStock *
PrecioVenta)
Productos
Productos
ImporteTotal > 1000
SELECT gamasproductos.Gama,
gamasproductos.DescripcionTexto,
SUM(productos.CantidadEnStock*productos.PrecioVenta) AS ImporteTotal
FROM productos INNER JOIN gamasproductos ON
productos.Gama=gamasproductos.Gama
GROUP BY gamasproductos.Gama
HAVING ImporteTotal>10000;
I.E.S. Puerto de la Cruz 1º ASIR - GTB Curso 2013/14
Mostrar el código del producto (CodigoProducto), nombre del producto
(Nombre), gama del producto (DescripcionTexto) y la cantidad total (suma)
pedida de cada producto (detallepedidos.Cantidad), de los productos de la
gama “Frutales”.
¿Qué mostrar? ¿Dónde buscar? Filtro Agrupar
CodigoProducto Productos CodigoProducto
Nombre Productos
DescripcionTexto GamasProductos
CantidadTotal =
SUM(
Cantidad)
DetallePedidos
Gama = „Frutales‟
Tenemos dos posibilidades:
Todos los productos de „Frutales‟ aunque no se hayan pedido nunca
SELECT productos.CodigoProducto,
productos.Nombre,
gamasproductos.DescripcionTexto,
SUM(detallepedidos.Cantidad) AS CantidadTotal
FROM productos INNER JOIN gamasproductos ON
productos.Gama=gamasproductos.Gama
LEFT JOIN detallepedidos ON
productos.CodigoProducto=detallepedidos.CodigoProducto
WHERE productos.Gama=‟Frutales‟
GROUP BY productos.CodigoProducto,
productos.Nombre,
gamasproductos.DescripcionTexto;
I.E.S. Puerto de la Cruz 1º ASIR - GTB Curso 2013/14
…………
Con LEFT JOIN a la tabla detallepedidos muestra todos los productos de la
gama, aunque no se hayan pedido nunca.
Todos los productos de „Frutales‟ que se han pedido alguna vez
SELECT productos.CodigoProducto,
productos.Nombre,
gamasproductos.DescripcionTexto,
SUM(detallepedidos.Cantidad) AS CantidadTotal
FROM productos INNER JOIN gamasproductos ON
productos.Gama=gamasproductos.Gama
INNER JOIN detallepedidos ON
productos.CodigoProducto=detallepedidos.CodigoProducto
WHERE productos.Gama=‟Frutales‟
GROUP BY productos.CodigoProducto,
productos.Nombre,
gamasproductos.DescripcionTexto;
…………..
I.E.S. Puerto de la Cruz 1º ASIR - GTB Curso 2013/14
Mostrar el nombre completo (Nombre, Apellido1 y Apellido2) de los
empleados del puesto (Puesto) “Representante de ventas”, el nombre de los
clientes a los que representa (NombreCliente) y el teléfono del cliente
(Telefono) de todos los clientes de la ciudad de Madrid. Ordenado por nombre y
apellidos del empleado representante de ventas y después por nombre del
cliente.
¿Qué mostrar? ¿Dónde buscar? Filtro Agrupar
Nombre Empleados
Apellido1 Empleados
Apellido2 Empleados
Puesto = „Representante Ventas‟
NombreCliente Clientes
Telefono Clientes
Ciudad = „Madrid‟
ORDENAR POR Nombre, Apellido1, Apellido2, NombreCliente
SELECT empleados.Nombre,
empleados.Apellido1,
empleados.Apellido2,
clientes.NombreCliente,
clientes.Telefono
FROM clientes INNER JOIN empleados
ON clientes.CodigoEmpleadoRepVentas = empleados.CodigoEmpleado
WHERE empleados.Puesto=‟Representante Ventas‟ AND
clientes.Ciudad='Madrid'
ORDER BY empleados.Nombre,
empleados.Apellido1,
empleados.Apellido2,
clientes.NombreCliente;
I.E.S. Puerto de la Cruz 1º ASIR - GTB Curso 2013/14
Mostrar el importe total de los pagos efectuados por cada cliente de España
(Espa??a o Spain). Debe mostrar el código del cliente (CodigoCliente), nombre
del cliente (NombreCliente) y el importe total pagado (suma de las
cantidades).
¿Qué mostrar? ¿Dónde buscar? Filtro Agrupar
ImporteTotal ?????????? Pagos
Clientes Pais = „Espa??a‟ o
Pais = „Spain‟
CodigoCliente Clientes CodigoCliente
NombreCliente Clientes
ImporteTotal =
SUM(
Cantidad)
Pagos
SELECT pagos.CodigoCliente,
clientes.NombreCliente,
SUM(pagos.Cantidad) AS TotalPagado
FROM pagos INNER JOIN clientes
ON pagos.CodigoCliente = clientes.CodigoCliente
WHERE clientes.Pais IN ('Espa??a','Spain')
GROUP BY pagos.CodigoCliente,
clientes.NombreCliente;
I.E.S. Puerto de la Cruz 1º ASIR - GTB Curso 2013/14
Mostrar el importe total de los pagos efectuados por cada cliente de España
(Espa??a o Spain). Debe mostrar el código del cliente (CodigoCliente), nombre
del cliente (NombreCliente) y el importe total pagado (suma de las
cantidades). Mostrar sólo cuando el importe total supere el valor de 10000.)
¿Qué mostrar? ¿Dónde buscar? Filtro Agrupar
ImporteTotal ?????????? Pagos
Clientes Pais = „Espa??a‟ o
Pais = „Spain‟
CodigoCliente Clientes CodigoCliente
NombreCliente Clientes
ImporteTotal =
SUM(
Cantidad)
Pagos
ImporteTotal > 10000
SELECT pagos.CodigoCliente,
clientes.NombreCliente,
SUM(pagos.Cantidad) AS TotalPagado
FROM pagos INNER JOIN clientes
ON pagos.CodigoCliente = clientes.CodigoCliente
WHERE clientes.Pais IN ('Espa??a','Spain')
GROUP BY pagos.CodigoCliente,
clientes.NombreCliente
HAVING TotalPagado > 10000;
I.E.S. Puerto de la Cruz 1º ASIR - GTB Curso 2013/14
Mostrar los nombres completos (nombre y apellidos en una sola columna) de
los empleados acompañados de los nombres completos (nombre y apellidos en
una sola columna) de sus jefes de aquellos empleados cuyo puesto (Puesto) sea
„Representante Ventas‟. Se debe mostrar también el puesto que ocupa el jefe
(Puesto).
¿Qué mostrar? ¿Dónde buscar? Filtro Agrupar
NombreCompleto =
CONCAT(
Nombre,
Apellido1,
Apellido2)
Empleados
Empleados
Empleados
NombreCompleto =
CONCAT(
Nombre,
Apellido1,
Apellido2)
Empleados AS Jefes
Empleados AS Jefes
Empleados AS Jefes
Empleados.Puesto =
„Representante Ventas‟
Puesto Empleados AS Jefes
SELECT CONCAT(empleados.Nombre, “ “,
empleados.Apellido1, “ “,
empleados.Apellido2) AS NombreEmpleado,
CONCAT(jefes.Nombre, “ “,
jefes.Apellido1, “ “,
jefes.Apellido2) AS NombreJefe,
jefes.Puesto AS PuestoJefe
FROM empleados INNER JOIN empleados jefes
ON empleados.CodigoJefe = jefes.CodigoEmpleado
WHERE empleados.Puesto='Representante Ventas';
I.E.S. Puerto de la Cruz 1º ASIR - GTB Curso 2013/14
Mostrar el número de pedido (pedidos. CodigoPedido), código de cliente
(pedidos.CodigoCliente), nombre del cliente (clientes.NombreCliente), fecha requerida
(pedidos.FechaEsperada) y fecha de entrega (pedidos.FechaEntrega) de los pedidos que no
han sido entregados a tiempo
Entrega a tiempo: (pedidos.FechaEntrega<=pedidos.FechaEsperada)
Entrega fuera de tiempo: (pedidos.FechaEntrega>pedidos.FechaEsperada)
SELECT pedidos .CodigoPedido,
pedidos.CodigoCliente,
clientes.NombreCliente,
pedidos.FechaEsperada,
pedidos.FechaEntrega
FROM pedidos INNER JOIN clientes
ON pedidos.CodigoCliente = clientes.CodigoCliente
WHERE FechaEntrega > FechaEsperada;
I.E.S. Puerto de la Cruz 1º ASIR - GTB Curso 2013/14
Mostrar el número de pedido (pedidos. CodigoPedido), código de cliente
(pedidos.CodigoCliente), nombre de cliente (clientes.NombreCliente), estado del pedido
(pedidos.Estado), fecha esperada (pedidos.FechaEsperada) y fecha de entrega (pedidos.
FechaEntrega) de los pedidos cuya fecha de entrega ha sido al menos tres días antes de la
fecha esperada. (pista: Usar la función addDate de MySQL)
FechaEntrega anterior a FechaEsperada implica:
pedidos.FechaEntrega < pedidos.FechaEsperada
3 días antes de la FechaEsperada es restar 3 días a la FechaEsperada:
addDate(pedidos.FechaEsperada , -3)
Al menos 3 días antes <=:
pedidos.FechaEntrega<=addDate(pedidos.FechaEsperada,-3)
SELECT pedidos.CodigoPedido,
pedidos.CodigoCliente,
clientes.NombreCliente,
pedidos.Estado,
pedidos.FechaEsperada,
pedidos.FechaEntrega
FROM pedidos INNER JOIN clientes
ON pedidos.CodigoCliente = clientes.CodigoCliente
WHERE pedidos.FechaEntrega<=addDate(pedidos.FechaEsperada,-3);
I.E.S. Puerto de la Cruz 1º ASIR - GTB Curso 2013/14
Mostrar la facturación que ha tenido la empresa en toda la historia (TODOS LOS
REGISTROS), indicando la base imponible, el IGIC y el total facturado.
NOTA: La base imponible se calcula sumando el coste del producto (detallepedidos.
PrecioUnidad) por el número de unidades vendidas (detallepedidos.Cantidad)
El IGIC es el 5 % de la base imponible, y el total facturado, la suma de los dos valores
calculados anteriormente (Base imponible + IGIC).
El número de unidades vendidas de cada producto sólo puede estar en la tabla
detallespedidos:
Detallepedidos.Cantidad
SELECT SUM(detallepedidos.Cantidad * detallepedidos.PrecioUnidad) AS
BaseImponible,
SUM((((detallepedidos.Cantidad * detallepedidos.PrecioUnidad)*5)/100)) AS
TotalIVA,
SUM((detallepedidos.Cantidad * detallepedidos.PrecioUnidad) +
((( detallepedidos.Cantidad * detallepedidos.PrecioUnidad)*5)/100)) AS
TotalVentas
FROM detallepedidos;
Se podía entender que el coste del producto es el campo:
productos.PrecioVenta
o también
productos.PrecioProveedor
Ambos eran válidos aunque la consulta sale un poco más compleja.
I.E.S. Puerto de la Cruz 1º ASIR - GTB Curso 2013/14
Mostrar el código del producto, nombre del producto, gama del producto y la cantidad
total pedida de cada producto (detallepedidos), de los productos de la gama
“Herramientas”.
SELECT detallepedidos.CodigoProducto,
productos.Nombre,
productos.Gama,
SUM(detallepedidos.Cantidad)
FROM detallepedidos INNER JOIN productos
ON detallepedidos.CodigoProducto = productos.CodigoProducto
WHERE productos.Gama='Herramientas'
(*) GROUP BY detallepedidos.CodigoProducto,
productos.Nombre,
productos.Gama;
(*) Si hay función de resumen o agrupamiento (SUM()) los campos que vamos a
mostrar deben estar incluidos en la cláusula GROUP BY obligatoriamente.