Comunicado sobre el contenido presente en el foro


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
Ayuda ejercicios gestión de datos
Autor Mensaje
roman1981 Sin conexión
Profesor del Modulo A
Sin estado :(
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 262
Agradecimientos dados: 0
Agradecimientos: 15 en 8 posts
Registro en: Nov 2010
Mensaje: #16
RE: Ayuda ejercicios gestión de datos
(14-09-2015 14:33)leandrong escribió:  Dejó el 16. No entendí bien por qué dice lo de la Provincia si no está en el Diseño. Y otra cosa, qué tiene que ver la aclaración de la composición del producto si se vende como producto único?



select C.clie_codigo, C.clie_razon_social, sum(IF1.item_cantidad),
(select top 1 IF3.item_producto
from Item_Factura IF3 join
Factura F3 on IF3.item_sucursal = F3.fact_sucursal and
IF3.item_tipo = F3.fact_tipo and
IF3.item_numero = F3.fact_numero
where F3.fact_cliente = C.clie_codigo and
year(F3.fact_fecha) = 2012
order by 1)
from Factura F1 join
Item_Factura IF1 on (IF1.item_numero = F1.fact_numero and
IF1.item_sucursal = F1.fact_sucursal and
IF1.item_tipo = F1.fact_tipo) join
Cliente C on (C.clie_codigo = F1.fact_cliente)
where year(F1.fact_fecha) = 2012.
group by C.clie_codigo, C.clie_razon_social
having sum(F1.fact_total) < (0.33 * (select top 1 sum(IF2.item_precio * IF2.item_cantidad)
from Item_Factura IF2 join
Factura F2 on (IF2.item_numero = F2.fact_numero AND
IF2.item_sucursal = F2.fact_sucursal AND
IF2.item_tipo = F2.fact_tipo)
where year(F2.fact_fecha) = 2012
group by IF2.Item_Producto
order by 1 desc))
order by 1



El 17 también.



select isnull(year(F1.fact_fecha)*100+(month(F1.fact_fecha)),'999999') as Periodo,
P.prod_codigo as Producto,
P.prod_detalle as Detalle,
isnull(sum(IF1.item_cantidad * IF1.item_precio),0) as Cantidad_Vendida,
isnull((select sum(IF2.item_cantidad * IF2.item_precio)
from Factura F2 join
Item_Factura IF2 on (IF2.item_numero = F2.fact_numero and
IF2.item_sucursal = F2.fact_sucursal and
IF2.item_tipo = F2.fact_tipo)
where year(F2.fact_fecha) = year(F1.fact_fecha)-1 and
month(F2.fact_fecha) = month(F1.fact_fecha) and
IF2.item_producto = P.prod_codigo),0) as Ventas_Año_Anterior,
count(IF1.item_producto) as Cant_Facturas
from Producto P left join
Item_Factura IF1 on (P.prod_codigo = IF1.item_producto) left join
Factura F1 on (IF1.item_numero = F1.fact_numero and
IF1.item_sucursal = F1.fact_sucursal and
IF1.item_tipo = F1.fact_tipo )
group by year(F1.fact_fecha), month(F1.fact_fecha), P.prod_codigo, P.prod_detalle
order by Periodo, P.prod_codigo



Te queria comentar que en el ejercicio 16 pusiste sum(IF1.item_cantidad) estas poniendo la cantidad de unidades de productos que compró y no la cantidad de veces que compró que saldria de la cantidad de facturas que hay de cada cliente.
Puede ser que no esta completo el select ? digo porque no pusiste el promedio de compra ni la cantidad de productos diferentes ni el monto de la mayor compra .
15-09-2015 13:28
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
leandrong Sin conexión
Secretario de la SAE
...
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 538
Agradecimientos dados: 151
Agradecimientos: 322 en 47 posts
Registro en: Sep 2008
Mensaje: #17
RE: Ayuda ejercicios gestión de datos
(15-09-2015 13:28)roman1981 escribió:  Te queria comentar que en el ejercicio 16 pusiste sum(IF1.item_cantidad) estas poniendo la cantidad de unidades de productos que compró y no la cantidad de veces que compró que saldria de la cantidad de facturas que hay de cada cliente.
Puede ser que no esta completo el select ? digo porque no pusiste el promedio de compra ni la cantidad de productos diferentes ni el monto de la mayor compra .

Con el fin de lanzar una nueva campaña comercial para los clientes que menos compran en la empresa, se pide una consulta SQL que retorne aquellos clientes cuyas ventas son inferiores a 1/3 del promedio de ventas del/los producto/s que más se vendieron en el 2012.
Además mostrar
1. Nombre del Cliente
2. Cantidad de unidades totales vendidas en el 2012 para ese cliente.
3. Código de producto que mayor venta tuvo en el 2012 (en caso de existir más de
1, mostrar solamente el de menor código) para ese cliente.

Para mí solo hay que mostrar estos 3 puntos, ese "además" está mal porque en la parte de arriba está indicando cuáles son los clientes que se van a mostrar.

Con respecto al sum(IF1.item_cantidad), lo puse así porque pide "cantidad de unidades". Si compró 5 de Cepita, 3 de Coca, 2 de Sprite, compró 10 unidades.

Igual me parece que estamos hablando de diferentes ejercicios por las cosas que decís que me faltaron.
(Este mensaje fue modificado por última vez en: 15-09-2015 23:38 por leandrong.)
15-09-2015 23:37
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
roman1981 Sin conexión
Profesor del Modulo A
Sin estado :(
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 262
Agradecimientos dados: 0
Agradecimientos: 15 en 8 posts
Registro en: Nov 2010
Mensaje: #18
RE: Ayuda ejercicios gestión de datos
(14-09-2015 14:33)leandrong escribió:  Dejó el 16. No entendí bien por qué dice lo de la Provincia si no está en el Diseño. Y otra cosa, qué tiene que ver la aclaración de la composición del producto si se vende como producto único?



select C.clie_codigo, C.clie_razon_social, sum(IF1.item_cantidad),
(select top 1 IF3.item_producto
from Item_Factura IF3 join
Factura F3 on IF3.item_sucursal = F3.fact_sucursal and
IF3.item_tipo = F3.fact_tipo and
IF3.item_numero = F3.fact_numero
where F3.fact_cliente = C.clie_codigo and
year(F3.fact_fecha) = 2012
order by 1)
from Factura F1 join
Item_Factura IF1 on (IF1.item_numero = F1.fact_numero and
IF1.item_sucursal = F1.fact_sucursal and
IF1.item_tipo = F1.fact_tipo) join
Cliente C on (C.clie_codigo = F1.fact_cliente)
where year(F1.fact_fecha) = 2012.
group by C.clie_codigo, C.clie_razon_social
having sum(F1.fact_total) < (0.33 * (select top 1 sum(IF2.item_precio * IF2.item_cantidad)
from Item_Factura IF2 join
Factura F2 on (IF2.item_numero = F2.fact_numero AND
IF2.item_sucursal = F2.fact_sucursal AND
IF2.item_tipo = F2.fact_tipo)
where year(F2.fact_fecha) = 2012
group by IF2.Item_Producto
order by 1 desc))
order by 1



El 17 también.



select isnull(year(F1.fact_fecha)*100+(month(F1.fact_fecha)),'999999') as Periodo,
P.prod_codigo as Producto,
P.prod_detalle as Detalle,
isnull(sum(IF1.item_cantidad * IF1.item_precio),0) as Cantidad_Vendida,
isnull((select sum(IF2.item_cantidad * IF2.item_precio)
from Factura F2 join
Item_Factura IF2 on (IF2.item_numero = F2.fact_numero and
IF2.item_sucursal = F2.fact_sucursal and
IF2.item_tipo = F2.fact_tipo)
where year(F2.fact_fecha) = year(F1.fact_fecha)-1 and
month(F2.fact_fecha) = month(F1.fact_fecha) and
IF2.item_producto = P.prod_codigo),0) as Ventas_Año_Anterior,
count(IF1.item_producto) as Cant_Facturas
from Producto P left join
Item_Factura IF1 on (P.prod_codigo = IF1.item_producto) left join
Factura F1 on (IF1.item_numero = F1.fact_numero and
IF1.item_sucursal = F1.fact_sucursal and
IF1.item_tipo = F1.fact_tipo )
group by year(F1.fact_fecha), month(F1.fact_fecha), P.prod_codigo, P.prod_detalle
order by Periodo, P.prod_codigo



Hay cosas en el 16 que me parece que estan mal:

1) me parece que no pusiste el producto que mayor venta tuvo en el 2012 por cada cliente porque solo te quedaste con el primero pero no agrupaste por producto y ordenaste de manera descendente por ventas. El tema es que es lo que considera como "mayor venta" si es el producto que mayor unidades se vendió o el prodcuto que mas facturó.

2) me parece que le erraste en el having porque estas sumando muchas veces el total de una misma factura de un cliente. Acordate que los inner join te van a hacer aparece mas de 1 vez los totales por cada factura de cada cliente.

3) respecto al promedio....se refiere al producto que mas unidades se vendió o al que mas facturó?
(Este mensaje fue modificado por última vez en: 20-09-2015 12:56 por roman1981.)
20-09-2015 11:56
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
leandrong Sin conexión
Secretario de la SAE
...
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 538
Agradecimientos dados: 151
Agradecimientos: 322 en 47 posts
Registro en: Sep 2008
Mensaje: #19
RE: Ayuda ejercicios gestión de datos
(20-09-2015 11:56)roman1981 escribió:  Hay cosas en el 16 que me parece que estan mal:

1) me parece que no pusiste el producto que mayor venta tuvo en el 2012 por cada cliente porque solo te quedaste con el primero pero no agrupaste por producto y ordenaste de manera descendente por ventas. El tema es que es lo que considera como "mayor venta" si es el producto que mayor unidades se vendió o el prodcuto que mas facturó.

2) me parece que le erraste en el having porque estas sumando muchas veces el total de una misma factura de un cliente. Acordate que los inner join te van a hacer aparece mas de 1 vez los totales por cada factura de cada cliente.

3) respecto al promedio....se refiere al producto que mas unidades se vendió o al que mas facturó?

Ahí lo cambié, sí, me había mandado cualquiera en varias cosas. El promedio es avg(Cantidad Vendida * Precio) al igual que con el producto que más facturó. En la factura está el total de la venta.

Por favor, editá tus comentarios y borrá la parte de código porque como lo fui actualizando puede entrar cualquiera y confundirse.
(Este mensaje fue modificado por última vez en: 20-09-2015 19:27 por leandrong.)
20-09-2015 18:21
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
LAUS Sin conexión
Campeon del cubo Rubik
:)
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 129
Agradecimientos dados: 47
Agradecimientos: 4 en 2 posts
Registro en: Jul 2008
Mensaje: #20
RE: Ayuda ejercicios gestión de datos
(10-09-2015 21:30)leandrong escribió:  El 14 dice "Mostrar todos los clientes" por lo que tienen que aparecer la misma cantidad si hacés

Select * from Cliente.

Me quedó así:


Select clie_codigo,
(select count(*) from factura where fact_cliente = A.clie_codigo and year(fact_fecha) = 2012),
(select avg(fact_total) from factura where fact_cliente = A.clie_codigo and year(fact_fecha) = 2012),
(select count(distinct(item_producto))
from Factura F join
Item_Factura I on (F.fact_tipo = I.item_tipo and
F.fact_sucursal = I.item_sucursal and
F.fact_numero = I.item_numero)
where F.fact_cliente = A.clie_codigo and year(F.fact_fecha) = 2012),
(select top 1 fact_total from factura where fact_cliente = A.clie_codigo and year(fact_fecha) = 2012 order by 1 desc)
from Cliente A
order by 2 desc



El 15 alguien lo hizo? Lo tengo hecho de esta forma, da bien pero no sé si hay otra. Me queda la duda con el
where (I1.item_producto < I2.item_producto) pero no encontré otra forma de sacar los repetidos.
Si muestra 1 2, 1 3, 1 4, cuando llegue al 4 no va a mostrar ni 4 1, 4 2, ni 4 3 porque son menores pero ya lo mostró con 2 3, 2 4, 3 4...



select I1.item_producto, P1.prod_detalle, I2.item_producto, P2.prod_detalle, count(*)
from Item_Factura I1 join
Item_Factura I2 on (I1.item_numero = I2.item_numero AND
I1.item_sucursal = I2.item_sucursal AND
I1.item_tipo = I2.item_tipo) join
Producto P1 on (P1.prod_codigo = I1.item_producto) join
Producto P2 on (P2.prod_codigo = I2.item_producto)
where (I1.item_producto < I2.item_producto) --and count(*) > 500
group by I1.item_producto, P1.prod_detalle, I2.item_producto, P2.prod_detalle
order by 1, 2



Encontraron otra manera de hacer que no se repitan?
04-06-2016 15:56
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)



    This forum uses Lukasz Tkacz MyBB addons.