Beruflich Dokumente
Kultur Dokumente
Puerto de la Cruz
1 ASIR - GTB
Curso 2013/14
1 ASIR - GTB
Curso 2013/14
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
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
1 ASIR - GTB
Curso 2013/14
Filtro
SELECT clientes.CodigoEmpleadoRepVentas,
COUNT(CodigoCliente) AS NumClientes
FROM clientes
GROUP BY clientes.CodigoEmpleadoRepVentas;
Agrupar
CodigoEmpleadoRepVentas
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;
Dnde buscar?
Pagos
SELECT AVG(Cantidad)
FROM pagos
WHERE Year(FechaPago)=2006;
1 ASIR - GTB
Curso 2013/14
Dnde buscar?
Clientes
Filtro
SELECT clientes.Pais,
COUNT(clientes.CodigoCliente) AS NumClientes
FROM clientes
GROUP BY Pais;
Agrupar
Pais
1 ASIR - GTB
Curso 2013/14
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;
1 ASIR - GTB
Curso 2013/14
Filtro
Ciudad de Madrid
Ciudad = Madrid
Agrupar
(opcional)
Ciudad
Filtro
Ciudad de Madrid
Ciudad = Madrid
Agrupar
(opcional)
Ciudad
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
O tambin
SELECT pedidos.Estado
FROM pedidos
GROUP BY pedidos.Estado;
Filtro
Agrupar
Estado
1 ASIR - GTB
Curso 2013/14
Dnde buscar?
Empleados
Filtro
Agrupar
Empleados
Empleados
Oficinas
Oficinas
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
1 ASIR - GTB
Curso 2013/14
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
1 ASIR - GTB
CodigoCliente
NombreCliente
Dnde buscar?
Pedidos
Pedidos
Pedidos
Pedidos
Curso 2013/14
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
1 ASIR - GTB
Curso 2013/14
1 ASIR - GTB
Curso 2013/14
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;
1 ASIR - GTB
Curso 2013/14
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);
1 ASIR - GTB
Curso 2013/14
1 ASIR - GTB
Curso 2013/14
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;
1 ASIR - GTB
Curso 2013/14
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;
1 ASIR - GTB
Curso 2013/14
Dnde buscar?
Productos
Productos
GamasProductos
Filtro
Agrupar
CodigoProducto
DetallePedidos
Gama = Frutales
1 ASIR - GTB
Curso 2013/14
..
1 ASIR - GTB
Curso 2013/14
Dnde buscar?
Empleados
Empleados
Empleados
Filtro
Agrupar
Clientes
Clientes
Ciudad = Madrid
1 ASIR - GTB
Curso 2013/14
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
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;
1 ASIR - GTB
Curso 2013/14
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
1 ASIR - GTB
Curso 2013/14
1 ASIR - GTB
Curso 2013/14
1 ASIR - GTB
Curso 2013/14
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);
1 ASIR - GTB
Curso 2013/14
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.