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)
-
* codigo, nombre, cod contacto, nom contacto para los clientes con contacto
+
* 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.
Personal tools