Donar $20 Donar $50 Donar $100 Donar mensualmente
 


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[Aporte][Gestión de Datos] Parcial práctico Reinosa
Autor Mensaje
gan Sin conexión
Profesor del Modulo A
:ö:
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 286
Agradecimientos dados: 87
Agradecimientos: 143 en 47 posts
Registro en: Apr 2011
Mensaje: #1
[Aporte][Gestión de Datos] Parcial práctico Reinosa Parciales Gestión de Datos
   

DER sobre el que está basado el parcial (Es el de la práctica de este cuatrimestre)
   

Base de Datos

.rar  BD.rar (Tamaño: 606,6 KB / Descargas: 51)

me asombra la voluntad del instinto
(Este mensaje fue modificado por última vez en: 30-06-2015 23:53 por gan.)
30-06-2015 23:48
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] gan recibio 3 Gracias por este post
rod77 (01-07-2015), aguZion (07-07-2015), gonnza (26-07-2015)
rod77 Sin conexión
Presidente del CEIT
:o
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.079
Agradecimientos dados: 130
Agradecimientos: 399 en 176 posts
Registro en: Mar 2011
Mensaje: #2
RE: [Aporte][Gestión de Datos] Parcial práctico Reinosa
Que habia que hacer en el 2do ?
01-07-2015 09:43
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Knofm Sin conexión
Militante
Sin estado :(
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 76
Agradecimientos dados: 26
Agradecimientos: 20 en 13 posts
Registro en: May 2011
Mensaje: #3
RE: [Aporte][Gestión de Datos] Parcial práctico Reinosa
@rod777 el segundo punto se resolvia por t-sql. La tabla se suponia ya creada, así no podías usar identity en la definición para que se autoincremente.
Yo creo un stored procedure que tenía un cursor, con esa consulta le metía todo al cursor, y luego recorría, además tenia un contador para ir poniendo la posición del ranking. También cree una función para devolver el SI/NO del combo.
02-07-2015 00:25
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Knofm recibio 1 Gracias por este post
rod77 (02-07-2015)
rod77 Sin conexión
Presidente del CEIT
:o
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.079
Agradecimientos dados: 130
Agradecimientos: 399 en 176 posts
Registro en: Mar 2011
Mensaje: #4
RE: [Aporte][Gestión de Datos] Parcial práctico Reinosa
Hice lo mismo.
El store le pasaba como parametro el año. y adentro habia un cursor.

El tema es que el select que tenia adentro el cursor me daba error por el ORDER BY, (se lo quitaba y funcionaba) medio raro, pense que el motor no dejaba ponérselo, pero investigando dice que si, así que no se que es lo me daba error.
02-07-2015 10:12
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Nicco Sin conexión
Campeon del cubo Rubik
Sin estado :(
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 101
Agradecimientos dados: 26
Agradecimientos: 81 en 12 posts
Registro en: Feb 2011
Mensaje: #5
RE: [Aporte][Gestión de Datos] Parcial práctico Reinosa
No era necesario resolverlo con cursor. Hay una función en SQL Server que te da el número de fila, que justamente acá te viene al pelo.

Los que lo hicimos en maquina tuvimos que mandarlo por mail ni bien terminabamos, ya que llegaba el wifi al aula. Y bueno, lo tenia en mi bandeja de mails enviados. Quedaba algo asi:


CREATE FUNCTION comprobarCombo(@codCliente as char(6))
returns varchar(3)
as
BEGIN
DECLARE @rta as varchar(3), @cant as integer
select @cant= count(*)
from factura f
inner 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
inner join composicion c on i.item_producto = c.comp_producto
where f.fact_cliente = @codCliente
if (@cant>0)
SET @rta='SI'
ELSE
SET @rta='NO'
return @rta
END


CREATE procedure generarRanking
as
BEGIN
insert into raking
select ROW_NUMBER() over (order by SUM(f1.fact_total) desc) as posicion,
c1.clie_codigo as cod_clie,
SUM(f1.fact_total) as factTotal,
c1.clie_razon_social as nom_clie,
COUNT(f1.fact_numero) as cantidad,
SUM(f1.fact_total)/COUNT( f1.fact_numero) as pre_pro,
dbo.comprobarCombo (c1.clie_codigo) as poseeCombo,
(
select top 1 p2.prod_detalle
from Factura f2
inner join Item_Factura i2 on f2.fact_tipo=i2.item_tipo and f2.fact_sucursal=i2.item_sucursal and f2.fact_numero=i2.item_numero
inner join Producto p2 on p2.prod_codigo = i2.item_producto
where f2.fact_cliente=c1.clie_codigo
group by p2.prod_detalle
order by SUM(i2.item_cantidad) desc
) as nom_producto
from Cliente c1
inner join Factura f1 on c1.clie_codigo=f1.fact_cliente
group by c1.clie_codigo, c1.clie_razon_social


END

(Este mensaje fue modificado por última vez en: 03-07-2015 09:36 por Nicco.)
03-07-2015 09:34
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
hernanf_87 Sin conexión
Militante
Sin estado :(
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 53
Agradecimientos dados: 3
Agradecimientos: 11 en 1 posts
Registro en: May 2013
Mensaje: #6
RE: [Aporte][Gestión de Datos] Parcial práctico Reinosa
Nicco escribió:Nicco
como hiciste el ejercicio 1? Me podes dar una mano?
03-07-2015 17:50
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
r_mocca Sin conexión
Militante
Estudiando...
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 85
Agradecimientos dados: 1
Agradecimientos: 10 en 3 posts
Registro en: Feb 2011
Mensaje: #7
RE: [Aporte][Gestión de Datos] Parcial práctico Reinosa
Alguien tiene resuelto el punto 1?
06-07-2015 00:23
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
gan Sin conexión
Profesor del Modulo A
:ö:
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 286
Agradecimientos dados: 87
Agradecimientos: 143 en 47 posts
Registro en: Apr 2011
Mensaje: #8
RE: [Aporte][Gestión de Datos] Parcial práctico Reinosa
De Reinosa

"Acá te mando una resolución que hizo uno de los chicos, el ejercicio de SQL hace un select para cada campo y no hace falta, solo había que hacer subselect para el cliente que más compro y la última columna los demás sepueden hacer todos junto con el producto más vendido"



--ejercicio nro 1

select YEAR(fa.fact_fecha)
,(select top 1 c.comp_producto
from Factura f, Item_Factura i, Composicion c
where f.fact_tipo = i.item_tipo and f.fact_sucursal = i.item_sucursal and f.fact_numero = i.item_numero
and i.item_producto = c.comp_producto and YEAR(fa.fact_fecha) = YEAR(f.fact_fecha)
group by c.comp_producto
order by SUM(i.item_cantidad) )
, (select COUNT (*)
from Composicion c where c.comp_producto = (select top 1 c.comp_producto
from Factura f, Item_Factura i, Composicion c
where f.fact_tipo = i.item_tipo and f.fact_sucursal = i.item_sucursal and f.fact_numero = i.item_numero
and i.item_producto = c.comp_producto and YEAR(fa.fact_fecha) = YEAR(f.fact_fecha)
group by c.comp_producto
order by SUM(i.item_cantidad) ) )


,(select COUNT (*) from Factura f2 , Item_Factura i2
where YEAR(fa.fact_fecha) = YEAR(f2.fact_fecha) and f2.fact_tipo = i2.item_tipo and f2.fact_sucursal = i2.item_sucursal and f2.fact_numero = i2.item_numero
and i2.item_producto = (select top 1 c.comp_producto from Factura f, Item_Factura i, Composicion c
where f.fact_tipo = i.item_tipo and f.fact_sucursal = i.item_sucursal and f.fact_numero = i.item_numero
and i.item_producto = c.comp_producto and YEAR(fa.fact_fecha) = YEAR(f.fact_fecha)
group by c.comp_producto
order by SUM(i.item_cantidad) )
)
, (select top 1 c.clie_codigo from Factura f2 , Item_Factura i2, Cliente c
where c.clie_codigo = f2.fact_cliente and YEAR(fa.fact_fecha) = YEAR(f2.fact_fecha) and f2.fact_tipo = i2.item_tipo and f2.fact_sucursal = i2.item_sucursal and f2.fact_numero = i2.item_numero
and i2.item_producto = (select top 1 c.comp_producto from Factura f, Item_Factura i, Composicion c
where f.fact_tipo = i.item_tipo and f.fact_sucursal = i.item_sucursal and f.fact_numero = i.item_numero
and i.item_producto = c.comp_producto and YEAR(fa.fact_fecha) = YEAR(f.fact_fecha)
group by c.comp_producto
order by SUM(i.item_cantidad) )
group by c.clie_codigo
order by SUM( i2.item_cantidad)
)

,(select SUM (i2.item_cantidad * i2.item_precio) from Factura f2 , Item_Factura i2
where YEAR(fa.fact_fecha) = YEAR(f2.fact_fecha) and f2.fact_tipo = i2.item_tipo and f2.fact_sucursal = i2.item_sucursal and f2.fact_numero = i2.item_numero
and i2.item_producto = (select top 1 c.comp_producto from Factura f, Item_Factura i, Composicion c
where f.fact_tipo = i.item_tipo and f.fact_sucursal = i.item_sucursal and f.fact_numero = i.item_numero
and i.item_producto = c.comp_producto and YEAR(fa.fact_fecha) = YEAR(f.fact_fecha)
group by c.comp_producto
order by SUM(i.item_cantidad) )
) / SUM(fa.fact_total) * 100
from Factura fa


group by YEAR(fa.fact_fecha)

order by sum(fa.fact_total) desc



me asombra la voluntad del instinto
24-07-2015 21:24
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Nicco Sin conexión
Campeon del cubo Rubik
Sin estado :(
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 101
Agradecimientos dados: 26
Agradecimientos: 81 en 12 posts
Registro en: Feb 2011
Mensaje: #9
RE: [Aporte][Gestión de Datos] Parcial práctico Reinosa
(03-07-2015 17:50)hernanf_87 escribió:  
Nicco escribió:Nicco
como hiciste el ejercicio 1? Me podes dar una mano?

Che jamás me avisó de este quote, perdón =(.

Me puso un 8, asi que evidentemente debe tener algunas cositas mal, pero para orientar sirve


--------------- PUNTO 1 ------------------

select YEAR(f.fact_fecha) as Año,
--ProductoMasVendido
(
select top 1 i2.item_producto
from factura f2
inner join Item_Factura i2 on i2.item_tipo=f2.fact_tipo and i2.item_sucursal=f2.fact_sucursal and i2.item_numero=f2.fact_numero
inner join Producto p2 on i2.item_producto = p2.prod_codigo
inner join Composicion c2 on p2.prod_codigo = c2.comp_producto
where YEAR(f2.fact_fecha) = YEAR(f.fact_fecha)
group by i2.item_producto
order by SUM(i2.item_cantidad) desc
) as productoMasVendido,
-- cantidadDeProds q componen al prod mas vendido
(
select COUNT(distinct c3.comp_componente)
from Producto p3
inner join Composicion c3 on p3.prod_codigo = c3.comp_producto
where c3.comp_producto=

(
select top 1 i2.item_producto
from factura f2
inner join Item_Factura i2 on i2.item_tipo=f2.fact_tipo and i2.item_sucursal=f2.fact_sucursal and i2.item_numero=f2.fact_numero
inner join Producto p2 on i2.item_producto = p2.prod_codigo
inner join Composicion c2 on p2.prod_codigo = c2.comp_producto
where YEAR(f2.fact_fecha) = YEAR(f.fact_fecha)
group by i2.item_producto
order by SUM(i2.item_cantidad) desc
)

)as cantidadDeProductosQueLoComponen ,
-- cantidadDe facturas en las cuales aparece ese producto
(
select COUNT(*)
from Factura f4
inner join Item_Factura i4 on i4.item_tipo=f4.fact_tipo and i4.item_sucursal=f4.fact_sucursal and i4.item_numero=f4.fact_numero
where i4.item_producto=


(
select top 1 i2.item_producto
from factura f2
inner join Item_Factura i2 on i2.item_tipo=f2.fact_tipo and i2.item_sucursal=f2.fact_sucursal and i2.item_numero=f2.fact_numero
inner join Producto p2 on i2.item_producto = p2.prod_codigo
inner join Composicion c2 on p2.prod_codigo = c2.comp_producto
where YEAR(f2.fact_fecha) = YEAR(f.fact_fecha)
group by i2.item_producto
order by SUM(i2.item_cantidad) desc
)



group by i4.item_producto
) as cantidadDeFacturasDondeAparece,
-- codigoDelClienteQueMasLoCompro
(
select top 1 clie_codigo
from Cliente c5
inner join Factura f5 on c5.clie_codigo = f5.fact_cliente
inner join Item_Factura i5 on i5.item_tipo=f5.fact_tipo and i5.item_sucursal=f5.fact_sucursal and i5.item_numero=f5.fact_numero
where i5.item_producto=

(
select top 1 i2.item_producto
from factura f2
inner join Item_Factura i2 on i2.item_tipo=f2.fact_tipo and i2.item_sucursal=f2.fact_sucursal and i2.item_numero=f2.fact_numero
inner join Producto p2 on i2.item_producto = p2.prod_codigo
inner join Composicion c2 on p2.prod_codigo = c2.comp_producto
where YEAR(f2.fact_fecha) = YEAR(f.fact_fecha)
group by i2.item_producto
order by SUM(i2.item_cantidad) desc
)

group by c5.clie_codigo
order by COUNT(*) desc
) as codigoDelClienteQueMasLoCompro,
-- porcentaje que representa la venta de ese prod respecto a la total de venta del año
(
select sum(i6.item_precio * i6.item_cantidad) *100 /
(select sum(i7.item_precio * i7.item_cantidad)
from Factura f7
inner join Item_Factura i7 on i7.item_tipo=f7.fact_tipo and i7.item_sucursal=f7.fact_sucursal and i7.item_numero=f7.fact_numero
)
from Factura f6
inner join Item_Factura i6 on i6.item_tipo=f6.fact_tipo and i6.item_sucursal=f6.fact_sucursal and i6.item_numero=f6.fact_numero
where i6.item_producto =



(
select top 1 i2.item_producto
from factura f2
inner join Item_Factura i2 on i2.item_tipo=f2.fact_tipo and i2.item_sucursal=f2.fact_sucursal and i2.item_numero=f2.fact_numero
inner join Producto p2 on i2.item_producto = p2.prod_codigo
inner join Composicion c2 on p2.prod_codigo = c2.comp_producto
where YEAR(f2.fact_fecha) = YEAR(f.fact_fecha)
group by i2.item_producto
order by SUM(i2.item_cantidad) desc
)

group by i6.item_producto

) as porcentajeQueRepresentaLaVentaEnElAño
from Factura f
group by YEAR(f.fact_fecha)


27-07-2015 01:54
Envíale un email 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.