Sie sind auf Seite 1von 31

I.E.S.

Puerto de la Cruz

1 ASIR - GTB

EJERCICIOS PRCTICOS SQL. - SOLUCIONES


Utilizando el siguiente esquema de la base de datos jardinera

Codifica en SQL (MySQL) sentencias para obtener la siguiente informacin:

Curso 2013/14

I.E.S. Puerto de la Cruz

1 ASIR - GTB

Curso 2013/14

Mostrar el nombre (NombreCliente) de los clientes espaoles.


Qu mostrar?
NombreCliente

Dnde buscar?
Clientes

Filtro
Pais = Espa??a
Pais = Spain

SELECT clientes.NombreCliente
FROM clientes
WHERE clientes.pais IN (Espa??a,Spain);

(o Tambin)
SELECT clientes.NombreCliente
FROM clientes
WHERE (clientes.pais = Espa??a) OR
(clients.pais = Spain);

Agrupar

I.E.S. Puerto de la Cruz

1 ASIR - GTB

Curso 2013/14

Mostrar cuntos clientes tienen las ciudades cuyo nombre (Ciudad) contiene
la palabra del.
Qu mostrar?
Dnde buscar?
Cuntos clientes
Clientes
COUNT(CodigoCliente)
las ciudades: Ciudad

Filtro
Ciudad contiene del
Ciudad Like % del %

Agrupar

Ciudad

SELECT clientes.Ciudad ,
COUNT(clientes.CodigoCliente) AS NumClientes
FROM clientes
WHERE clientes.Ciudad LIKE % del %
GROUP BY clientes.Ciudad;

Mostrar cuntos clientes tienen las ciudades cuyo nombre (Ciudad) empieza
por M.
Qu mostrar?
Dnde buscar?
Cuntos clientes
Clientes
COUNT(CodigoCliente)
las ciudades: Ciudad

Filtro
Ciudad empieza por M
Ciudad Like M%

SELECT clientes.Ciudad ,
COUNT(clientes.CodigoCliente) AS NumClientes
FROM clientes
WHERE clientes.Ciudad LIKE M%
GROUP BY clientes.Ciudad;

Agrupar

Ciudad

I.E.S. Puerto de la Cruz

1 ASIR - GTB

Curso 2013/14

Mostrar el cdigo de empleado (CodigoEmpleadoRepVentas) y el nmero de


clientes al que atiende cada empleado.
Qu mostrar?
Dnde buscar?
CodigoEmpleadoRepVentas Clientes
Nmero de clientes
COUNT(CodigoCliente)

Filtro

SELECT clientes.CodigoEmpleadoRepVentas,
COUNT(CodigoCliente) AS NumClientes
FROM clientes
GROUP BY clientes.CodigoEmpleadoRepVentas;

Agrupar
CodigoEmpleadoRepVentas

I.E.S. Puerto de la Cruz

1 ASIR - GTB

Curso 2013/14

Mostrar cul fue el mayor pago (Cantidad) efectuado por los clientes en el ao
2008.
Qu mostrar?
Mayor pago (Cantidad)
MAX(Cantidad)

Dnde buscar?
Pagos

Filtro
Ao 2008
FechaPago = ??/??/2008
YEAR(FechaPago)=2008

Agrupar

Filtro
Ao 2006
FechaPago = ??/??/2006
YEAR(FechaPago)=2006

Agrupar

SELECT MAX(Cantidad)
FROM pagos
WHERE Year(FechaPago)=2008;

Mostrar cul fue el pago medio en 2006.


Qu mostrar?
Pago medio (Cantidad)
AVG(Cantidad)

Dnde buscar?
Pagos

SELECT AVG(Cantidad)
FROM pagos
WHERE Year(FechaPago)=2006;

I.E.S. Puerto de la Cruz

1 ASIR - GTB

Curso 2013/14

Mostrar cuntos clientes tiene cada pas.


Qu mostrar?
Cuntos clientes
COUNT(CodigoCliente)
Cada pas: Pas

Dnde buscar?
Clientes

Filtro

SELECT clientes.Pais,
COUNT(clientes.CodigoCliente) AS NumClientes
FROM clientes
GROUP BY Pais;

Agrupar

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?
Nombre
Apellido1

Dnde buscar?
Empleados

Filtro
Agrupar
No
ocupen
puesto
Representante Ventas
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 cuntas oficinas tiene la ciudad de Madrid.


Qu mostrar?
Dnde buscar?
Cuntas oficinas
Oficinas
COUNT(CodigoOficina)
(opcional)
Ciudad

Filtro
Ciudad de Madrid
Ciudad = Madrid

Agrupar

(opcional)
Ciudad

SELECT COUNT(oficinas.CodigoOficina) AS NumOficinas


FROM oficinas
WHERE oficinas.Ciudad=Madrid;

Mostrar cuntos clientes tiene la ciudad de Madrid.


Qu mostrar?
Dnde buscar?
Cuntas clientes
Clientes
COUNT(CodigoCliente)
(opcional)
Ciudad

Filtro
Ciudad de Madrid
Ciudad = Madrid

SELECT COUNT(clientes.CodigoCliente) AS NumClientes


FROM clientes
WHERE clientes.Ciudad=Madrid;

Agrupar

(opcional)
Ciudad

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?
Distintos estados
Estado

Dnde buscar?
Pedidos

SELECT DISTINCT pedidos.Estado


FROM pedidos;

O tambin
SELECT pedidos.Estado
FROM pedidos
GROUP BY pedidos.Estado;

Filtro

Agrupar
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 cdigo de la oficina (CodigoOficina) en la que
trabaja y la ciudad (Ciudad) y pas (Pais) de dicha oficina.
Qu mostrar?
Nombre completo del
empleado una columna
CONCAT(Nombre,
Apellido1, Apellido2)
Puesto
CodigoOficina
Ciudad
Pais

Dnde buscar?
Empleados

Filtro

Agrupar

Empleados
Empleados
Oficinas
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 cul fue el primer y ltimo pago (FechaPago) que hizo cada cliente.
Debe mostrar tambin el cdigo del cliente (CodigoCliente), nombre del cliente
(NombreCliente).
Qu mostrar?
Primer pago
MIN(FechaPago)
ltimo pago
MAX(FechaPago)
CodigoCliente
NombreCliente

Dnde buscar?
Pagos

Filtro

Agrupar

Pagos
Pagos
Clientes

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;

CodigoCliente
(opcional)
NombreCliente

I.E.S. Puerto de la Cruz

1 ASIR - GTB

Curso 2013/14

Mostrar el nmero de pedido (CodigoPedido), fecha del pedido


(FechaPedido), fecha esperada (FechaEsperada), fecha de entrega
(FechaEntrega), cdigo de cliente (CodigoCliente) y nombre del cliente
(NombreCliente) de los pedidos en estado Pendiente que han sido
entregados (tienen fecha de entrega).
Qu mostrar?
CodigoPedido
FechaPedido
FechaEsperada
FechaEntrega

CodigoCliente
NombreCliente

Dnde buscar?
Pedidos
Pedidos
Pedidos
Pedidos

Filtro
Estado=Pendiente

Tienen
algo
FechaEntrega
NOT FechaEntrega
NULL

Pedidos
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);

Agrupar

en
IS

I.E.S. Puerto de la Cruz

1 ASIR - GTB

Mostrar el nmero de pedido


(FechaPedido), fecha esperada
(FechaEntrega), cdigo de cliente
(NombreCliente) de los pedidos
entregados (tienen fecha de entrega).
Qu mostrar?
CodigoPedido
FechaPedido
FechaEsperada
FechaEntrega

CodigoCliente
NombreCliente

Dnde buscar?
Pedidos
Pedidos
Pedidos
Pedidos

Curso 2013/14

(CodigoPedido), fecha del pedido


(FechaEsperada), fecha de entrega
(CodigoCliente) y nombre del cliente
en estado Rechazado que han sido

Filtro
Estado=Rechazado

Tienen
algo
FechaEntrega
NOT FechaEntrega
NULL

Pedidos
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);

Agrupar

en
IS

I.E.S. Puerto de la Cruz

1 ASIR - GTB

Curso 2013/14

I.E.S. Puerto de la Cruz

1 ASIR - GTB

Curso 2013/14

Mostrar un listado de los 5 productos que ms beneficios producen a la


empresa en cada pedido. Deben mostrar el cdigo 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?
CodigoProducto
Nombre
Beneficio =
PrecioUnidad PrecioProveedor

Dnde buscar?
Detallepedidos
Productos

Filtro

Agrupar
CodigoProducto
Nombre
Beneficio

Detallepedidos
Productos

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 slo por CodigoProducto

I.E.S. Puerto de la Cruz

1 ASIR - GTB

Curso 2013/14

Mostrar el nmero de pedido (CodigoPedido), cdigo de cliente


(CodigoCliente), nombre de cliente (NombreCliente), telfono 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 das despus de la fecha esperada.
(pista: Usar la funcin addDate() de MySQL)
Qu mostrar?
CodigoPedido
CodigoCliente
NombreCliente
Telefono
Estado
FechaEsperada
FechaEntrega

Dnde buscar?
Pedidos
Pedidos
Clientes
Clientes
Pedidos
Pedidos
Pedidos

Filtro

FechaEntrega
FechaEsperada + 3

Agrupar

>=

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

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?
DescripcionTexto
ImporteTotal =
SUM(
CantidadEnStock *
PrecioVenta)

Dnde buscar?
GamasProductos

Filtro

Agrupar
DescripcionTexto

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 slo las gamas de
productos en las que el importe total supere el valor de 10000.
Qu mostrar?
Gama
DescripcionTexto
ImporteTotal =
SUM(
CantidadEnStock *
PrecioVenta)

Dnde buscar?
GamasProductos
GamasProductos

Filtro

Agrupar
Gama

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 cdigo 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?
CodigoProducto
Nombre
DescripcionTexto
CantidadTotal =
SUM(
Cantidad)

Dnde buscar?
Productos
Productos
GamasProductos

Filtro

Agrupar
CodigoProducto

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 telfono del cliente
(Telefono) de todos los clientes de la ciudad de Madrid. Ordenado por nombre y
apellidos del empleado representante de ventas y despus por nombre del
cliente.
Qu mostrar?
Nombre
Apellido1
Apellido2

Dnde buscar?
Empleados
Empleados
Empleados

Filtro

Agrupar

Puesto = Representante Ventas


NombreCliente
Telefono

Clientes
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

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 Espaa
(Espa??a o Spain). Debe mostrar el cdigo del cliente (CodigoCliente), nombre
del cliente (NombreCliente) y el importe total pagado (suma de las
cantidades).
Qu mostrar?
ImporteTotal

CodigoCliente
NombreCliente
ImporteTotal =
SUM(
Cantidad)

Dnde buscar?
?????????? Pagos
Clientes

Filtro
Pais = Espa??a o
Pais = Spain

Clientes
Clientes

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;

Agrupar

CodigoCliente

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 Espaa
(Espa??a o Spain). Debe mostrar el cdigo del cliente (CodigoCliente), nombre
del cliente (NombreCliente) y el importe total pagado (suma de las
cantidades). Mostrar slo cuando el importe total supere el valor de 10000.)
Qu mostrar?
ImporteTotal

CodigoCliente
NombreCliente
ImporteTotal =
SUM(
Cantidad)

Dnde buscar?
?????????? Pagos
Clientes

Filtro

Agrupar

Pais = Espa??a o
Pais = Spain

Clientes
Clientes

CodigoCliente

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 acompaados 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 tambin el puesto que ocupa el jefe
(Puesto).
Qu mostrar?
NombreCompleto =
CONCAT(
Nombre,
Apellido1,
Apellido2)
NombreCompleto =
CONCAT(
Nombre,
Apellido1,
Apellido2)

Dnde buscar?

Filtro

Empleados
Empleados
Empleados

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';

Agrupar

I.E.S. Puerto de la Cruz

1 ASIR - GTB

Curso 2013/14

I.E.S. Puerto de la Cruz

1 ASIR - GTB

Curso 2013/14

Mostrar el nmero de pedido (pedidos. CodigoPedido), cdigo 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 nmero de pedido (pedidos. CodigoPedido), cdigo 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 das antes de la
fecha esperada. (pista: Usar la funcin addDate de MySQL)
FechaEntrega anterior a FechaEsperada implica:
pedidos.FechaEntrega < pedidos.FechaEsperada
3 das antes de la FechaEsperada es restar 3 das a la FechaEsperada:
addDate(pedidos.FechaEsperada , -3)
Al menos 3 das 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 facturacin 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 nmero 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 nmero de unidades vendidas de cada producto slo 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 poda entender que el coste del producto es el campo:


productos.PrecioVenta
o tambin
productos.PrecioProveedor
Ambos eran vlidos aunque la consulta sale un poco ms compleja.

I.E.S. Puerto de la Cruz

1 ASIR - GTB

Curso 2013/14

Mostrar el cdigo 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 funcin de resumen o agrupamiento (SUM()) los campos que vamos a
mostrar deben estar incluidos en la clusula GROUP BY obligatoriamente.

Das könnte Ihnen auch gefallen