Mostrando entradas con la etiqueta power designer. Mostrar todas las entradas
Mostrando entradas con la etiqueta power designer. Mostrar todas las entradas

miércoles, 12 de agosto de 2009

Informe de Bodega III

Estas son las últimas respuestas a preguntas relacionadas con el Informe de Bodega (I y II)

Confeccionar una consulta SQL que permita:

5. Obtener para cada producto el stock actual (considerar todas las compras y ventas)

SELECT p.pro_codigo, ((

SELECT ISNULL(SUM(compra.com_cantidad),0)

FROM compra

WHERE p.pro_codigo=compra.pro_codigo)-(

SELECT ISNULL(SUM(venta.vta_cantidad),0)

FROM venta

WHERE p.pro_codigo=venta.pro_codigo)) AS stock

FROM producto p




6. Obtener un listado de todos los productos que se encuentran bajo el stock crítico.

SELECT p.pro_codigo

FROM producto p

GROUP BY p.pro_codigo, p.pro_stock

HAVING p.pro_stock > ((

(

SELECT ISNULL(SUM(compra.com_cantidad),0)

FROM compra

WHERE p.pro_codigo=compra.pro_codigo)-(

SELECT ISNULL(SUM(venta.vta_cantidad),0)

FROM venta

WHERE p.pro_codigo=venta.pro_codigo))

)



7. Obtener por cada producto, el código, nombre y precio vigente el 01 de Enero de 2008.

SELECT p.pro_codigo , producto.pro_nombre, p.pre_valor

FROM precio p, producto

WHERE pre_desde = (

SELECT MAX(pre_desde) FROM precio

WHERE pro_codigo=p.pro_codigo AND pre_desde < '20080101')

AND producto.pro_codigo=p.pro_codigo


viernes, 7 de agosto de 2009

Informe de Bodega II

Continuamos respondiendo dos preguntas sobre el Informe de Bodega que vimos recientemente. Pueden obtener los datos de ejemplo en el respaldo de la base de datos. Recuerden compartir sus respuestas o vias de solución, dejando sus comentarios.


Confeccionar una consulta SQL que permita:

3. Obtener el código y nombre de cada producto que registre más de 500 unidades vendidas durante el 2005.

SELECT producto.pro_codigo, producto.pro_nombre

FROM producto, venta

WHERE producto.pro_codigo=venta.pro_codigo AND vta_fecha BETWEEN '20050101' AND '20051231'

GROUP BY producto.pro_codigo, venta.vta_cantidad, producto.pro_nombre

HAVING 500 < SUM(vta_cantidad)



4. Obtener cada uno de los productos que no registra ventas en el último mes.

SELECT producto.pro_codigo, producto.pro_nombre

FROM producto

WHERE pro_codigo NOT IN

(SELECT pro_codigo

FROM venta

WHERE venta.vta_fecha BETWEEN DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) AND dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))

)


miércoles, 5 de agosto de 2009

Informe de Bodega

Esta es la primera parte de tres entradas sobre un ejercicio de 7 preguntas para confeccionar la respuesta mediante una consulta SQL para cada pregunta, partiendo del siguiente modelo físico de una Bodega:


Las vías de solución puede ser más de una para cada pregunta, por ello les invito a dejar sus propuestas de solución en los comentarios para debatir. Al final de la entrada está el enlace para descargar una salva de la base de datos con datos de ejemplo (bodega_sampledata.bak), en Microsoft SQL Server 2005, los cuales se utilizaron para probar las consultas, resultados y tiempo de respuesta.


Confeccionar una consulta SQL que permita:

1. Obtener cada uno de los productos que no registra ventas.


SELECT producto.pro_codigo, producto.pro_nombre

FROM producto

WHERE pro_codigo NOT IN (SELECT DISTINCT [pro_codigo] FROM venta)

2. Obtener por cada producto, el código, el nombre, el menor precio y el mayor precio registrado en forma histórica (incluir productos sin precio).


SELECT producto.pro_codigo, producto.pro_nombre, MIN(precio.pre_valor) AS precio_min, MAX(precio.pre_valor) AS precio_max

FROM producto LEFT OUTER JOIN precio ON producto.pro_codigo = precio.pro_codigo

GROUP BY producto.pro_codigo, producto.pro_nombre




[Fichero salva base datos: Bodega datos de ejemplo]