SQL - script - practica 1
From Ibbddunq
(Difference between revisions)
(One intermediate revision not shown) | |||
Line 10: | Line 10: | ||
factura <numFact, fecha, importe, codCli, deposito> | factura <numFact, fecha, importe, codCli, deposito> | ||
itemFactura <numFact, nomProd, cantidad> | itemFactura <numFact, nomProd, cantidad> | ||
+ | deposito <deposito, direccion, codPostal> | ||
== Queries para practicar joins y cuestiones básicas == | == Queries para practicar joins y cuestiones básicas == | ||
Line 32: | Line 33: | ||
* <nro de factura, fecha, cantidad de bidu, cantidad de vitina> para las facturas que incluyen ambos productos. | * <nro de factura, fecha, cantidad de bidu, cantidad de vitina> para las facturas que incluyen ambos productos. | ||
* <numFact, prod1, prod2, cantidad> para las facturas que tienen la misma cantidad de dos productos (me los va a tirar al derecho y al revés, y todas las combinaciones, todo OK) | * <numFact, prod1, prod2, cantidad> para las facturas que tienen la misma cantidad de dos productos (me los va a tirar al derecho y al revés, y todas las combinaciones, todo OK) | ||
- | * | + | * cóodigo, nombre, código del contacto, nombre del contacto para los clientes con contacto |
* nombre y stock mínimo para todos los productos que: o bien tienen más de 20 unidades en el depósito de Dominico, o bien el cliente 1 hizo una compra por más de 20 unidades. Ordenar por nombre del producto. Sin repetidos. | * nombre y stock mínimo para todos los productos que: o bien tienen más de 20 unidades en el depósito de Dominico, o bien el cliente 1 hizo una compra por más de 20 unidades. Ordenar por nombre del producto. Sin repetidos. | ||
* Comparativo del stock de Dominico y Bernal, o sea <nomProd, stockDominico, stockBernal>, para los productos con stock en ambos depósitos. | * Comparativo del stock de Dominico y Bernal, o sea <nomProd, stockDominico, stockBernal>, para los productos con stock en ambos depósitos. | ||
== para practicar left join y right join == | == para practicar left join y right join == | ||
+ | * Comparativo del stock de Dominico y Bernal, o sea <nomProd, stockDominico, stockBernal>, incluyendo todos los productos, poniendo 0 donde no tengan stock. | ||
+ | * cóodigo, nombre, código del contacto, nombre del contacto para todos los clientes, dejando null en la info de contacto para los clientes que no tienen contacto. | ||
+ | * lista de precios al 01/06/2008 incluyendo los productos sin precio, ordenada por nombre del producto. | ||
+ | |||
+ | == para practicar agrupamiento == | ||
+ | * <fecha, numFact, importe, cant items, cant total unidades, suma de los importes a precios del día de la factura> ordenado por número de factura. | ||
+ | ** fijarse qué pasa si algún producto no tiene precio a la fecha de la factura. | ||
+ | * <nombre producto, cantidad total de unidades, en cuántos depósitos hay stock> ordenado por nombre de producto. | ||
+ | ** qué pasa con los productos sin stock. | ||
+ | * ranking de facturación <cliente, importe total facturado> | ||
+ | ** idem para junio de 2008 | ||
+ | ** idem incluyendo sólo aquellos clientes a los que se les facturó al menos 1000 pesos | ||
+ | ** idem incluyendo todos los clientes, aún los que no tienen facturas | ||
+ | |||
+ | == para practicar subselect == | ||
+ | * nombre de los productos con stock en Dominico y no en Bernal. | ||
+ | * código y nombre de los clientes cuya compra máxima supera a la suma de los importes de las facturas que se les hicieron. | ||
+ | * clientes a los que se les hizo al menos una factura, y que no se les hizo ninguna factura de menos de 20 pesos. | ||
+ | |||
+ | == desafíos == | ||
+ | * <depósito, producto con más unidades, unidades de ese producto, total unidades> para cada depósito. |
Current revision as of 20:02, 6 October 2008
Contents |
Esquema que usamos
Tablas iniciales
producto <nomProd, stkMinimo> stock <nomProd, deposito, cantidad> precioProducto <nomProd, desdeFecha, hastaFecha, precio>
Agregamos estas tablas
cliente <codCli, nomCli, localidad, compraMaxima, codCliContacto> codCliContacto puede ser null factura <numFact, fecha, importe, codCli, deposito> itemFactura <numFact, nomProd, cantidad> deposito <deposito, direccion, codPostal>
Queries para practicar joins y cuestiones básicas
Qué practicamos: condiciones, join natural, operaciones en una fila, ordenamiento, IFNULL, join moñito
- codigo y nombre de los clientes que compraron Bidu, sin repetidos, ordenados x nombre.
- idem que compraron Bidu en junio de 2008
- idem que hicieron facturas sobre el deposito de Dominico.
- <codCli, nomCli, numFact, fecha, importe, compraMaxima, diferencia> para las facturas que superan el maximo del cliente, ordenadas x nro de factura.
- <codCli, nomCli, numFact, fecha, cantidad> para las compras de Bidu, ordenadas x fecha y cod cliente.
- lo mismo ordenado x cod cliente y fecha.
- lo mismo ordenado x cantidad de la compra más grande a la mäs chica.
- <prod, stkmin, codCli, nomCli, numFact, fecha, cant> para los productos de stk minimo < 20, ordenado x producto y fecha.
- codigo y nombre de clientes que compraron Bidu o Vitina, sin repetidos.
- codigo, nombre, cod contacto o "SIN CONTACTO".
- <numFact, deposito, producto, cantidad en la factura, stock en el depósito de la factura> para cada item de cada factura de menos de 100 pesos, ordenado por numFact y nombre producto.
- <codCli, nomCli, compraMaxima, nomProd, precio * 1000> para cada combinación tal que el cliente puede comprar 1000 unidades del producto, tomando los precios al 01/05/2008.
- <prod, cant, unitario, total item> para los items de la factura 1.
para practicar alias de tablas y unión
- <nro de factura, fecha, cantidad de bidu, cantidad de vitina> para las facturas que incluyen ambos productos.
- <numFact, prod1, prod2, cantidad> para las facturas que tienen la misma cantidad de dos productos (me los va a tirar al derecho y al revés, y todas las combinaciones, todo OK)
- cóodigo, nombre, código del contacto, nombre del contacto para los clientes con contacto
- nombre y stock mínimo para todos los productos que: o bien tienen más de 20 unidades en el depósito de Dominico, o bien el cliente 1 hizo una compra por más de 20 unidades. Ordenar por nombre del producto. Sin repetidos.
- Comparativo del stock de Dominico y Bernal, o sea <nomProd, stockDominico, stockBernal>, para los productos con stock en ambos depósitos.
para practicar left join y right join
- Comparativo del stock de Dominico y Bernal, o sea <nomProd, stockDominico, stockBernal>, incluyendo todos los productos, poniendo 0 donde no tengan stock.
- cóodigo, nombre, código del contacto, nombre del contacto para todos los clientes, dejando null en la info de contacto para los clientes que no tienen contacto.
- lista de precios al 01/06/2008 incluyendo los productos sin precio, ordenada por nombre del producto.
para practicar agrupamiento
- <fecha, numFact, importe, cant items, cant total unidades, suma de los importes a precios del día de la factura> ordenado por número de factura.
- fijarse qué pasa si algún producto no tiene precio a la fecha de la factura.
- <nombre producto, cantidad total de unidades, en cuántos depósitos hay stock> ordenado por nombre de producto.
- qué pasa con los productos sin stock.
- ranking de facturación <cliente, importe total facturado>
- idem para junio de 2008
- idem incluyendo sólo aquellos clientes a los que se les facturó al menos 1000 pesos
- idem incluyendo todos los clientes, aún los que no tienen facturas
para practicar subselect
- nombre de los productos con stock en Dominico y no en Bernal.
- código y nombre de los clientes cuya compra máxima supera a la suma de los importes de las facturas que se les hicieron.
- clientes a los que se les hizo al menos una factura, y que no se les hizo ninguna factura de menos de 20 pesos.
desafíos
- <depósito, producto con más unidades, unidades de ese producto, total unidades> para cada depósito.