Consulta solo para expertos

08/11/2006 - 13:39 por Darinka | Informe spam
Gracias por la ayuda que me puedas brindar.

1 Tengo una table con mas de 5 millones de registros

Estructura :
Tengo 3 columnas basicas en una tabla (Movimiento)
1 Codigo del Articulo (Articulo)
2. Cod del Almacen (almacen)
3 Venta del articulo en el almacen (Venta)

Notas:
* Un articulo puede tener 1 o n ventas en el almacen pero puede ser
vendido en muchos almacenes
* El precio de un articulo no es fijo depende de la cantidad que compra
el cliente y en un almacen se pueden tener n ventas del mismo articulo.

Ejemplo

Articulo Almacen venta
235 1 3
524 1 582
524 1 58
597 1 5447
478 2 56
654 2 3587
654 2 23
479 3 500


Pregunta 1.

* Necesitor encontrar el articulo que mas se vendio por almacen
(Articulo, Almacen, Tot de la Venta) y cuanto fue el valor de la venta
de ese articulo, (si tiene mas de una venta en el almacen sumar las
ventas del articulo en el almacen para el calculo).

*Si dos articulos tienen igual venta en el almacen deben salir los dos
o indicar el numero de veces que se repitio esta venta




Esto deberia dar algo asi :
1, sume la venta del articulo por almacen

Articulo Almacen venta
235 1 3
524 1 640
597 1 5447
478 2 56
654 2 3610
479 3 500

Fue simple solo agrupe por almacen y por articulo y sume la venta

SELECT Articulo , Almacen, Sum(venta) AS SumaDeventa
FROM Moviemientos
GROUP BY Articulo , Almacen


Pregunta 2.
Encontrar el articulo mas vendido por almacen y el valor de la venta.
Articulo Almacen venta
597 1 5447
654 2 3610
479 3 500

Esta es la que no se como hacerla gracias por la ayuda

Preguntas similare

Leer las respuestas

#1 Maxi
08/11/2006 - 13:48 | Informe spam
Hola, proba con esto:

select max(t1.sumedeventa) as valor,t1.almacen,t2.articulo FROM
(
SELECT Articulo , Almacen, Sum(venta) AS SumaDeventa
FROM Moviemientos
GROUP BY Articulo , Almacen
) T1

inner join

(
SELECT Articulo , Almacen, Sum(venta) AS SumaDeventa
FROM Moviemientos
GROUP BY Articulo , Almacen
) T2

on t1.almacen = t2.almacen
and t1.sumadeventa = t2.sumadeventa

group by t1.almacen,t2.articulo






Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"Darinka" escribió en el mensaje
news:
Gracias por la ayuda que me puedas brindar.

1 Tengo una table con mas de 5 millones de registros

Estructura :
Tengo 3 columnas basicas en una tabla (Movimiento)
1 Codigo del Articulo (Articulo)
2. Cod del Almacen (almacen)
3 Venta del articulo en el almacen (Venta)

Notas:
* Un articulo puede tener 1 o n ventas en el almacen pero puede ser
vendido en muchos almacenes
* El precio de un articulo no es fijo depende de la cantidad que compra
el cliente y en un almacen se pueden tener n ventas del mismo articulo.

Ejemplo

Articulo Almacen venta
235 1 3
524 1 582
524 1 58
597 1 5447
478 2 56
654 2 3587
654 2 23
479 3 500


Pregunta 1.

* Necesitor encontrar el articulo que mas se vendio por almacen
(Articulo, Almacen, Tot de la Venta) y cuanto fue el valor de la venta
de ese articulo, (si tiene mas de una venta en el almacen sumar las
ventas del articulo en el almacen para el calculo).

*Si dos articulos tienen igual venta en el almacen deben salir los dos
o indicar el numero de veces que se repitio esta venta




Esto deberia dar algo asi :
1, sume la venta del articulo por almacen

Articulo Almacen venta
235 1 3
524 1 640
597 1 5447
478 2 56
654 2 3610
479 3 500

Fue simple solo agrupe por almacen y por articulo y sume la venta

SELECT Articulo , Almacen, Sum(venta) AS SumaDeventa
FROM Moviemientos
GROUP BY Articulo , Almacen


Pregunta 2.
Encontrar el articulo mas vendido por almacen y el valor de la venta.
Articulo Almacen venta
597 1 5447
654 2 3610
479 3 500

Esta es la que no se como hacerla gracias por la ayuda

Respuesta Responder a este mensaje
#2 Darinka
08/11/2006 - 14:03 | Informe spam
Hola Maxi gracias por la ayuda
Este fue el resultado.
valor almacen articulo
3 1 235
640 1 524
5447 1 597
56 2 478
3610 2 654
500 3 479

Trajo la sumatoria paro trajo todos los valores como podriamos filtrar
para encontrar el articulo mas vendido por almacen

Que para el caso seria.
valor almacen articulo
5447 1 597
3610 2 654
500 3 479

como crees que se pueda enocntrar esta informacion mediante la consulta
?



Maxi ha escrito:

Hola, proba con esto:

select max(t1.sumedeventa) as valor,t1.almacen,t2.articulo FROM
(
SELECT Articulo , Almacen, Sum(venta) AS SumaDeventa
FROM Moviemientos
GROUP BY Articulo , Almacen
) T1

inner join

(
SELECT Articulo , Almacen, Sum(venta) AS SumaDeventa
FROM Moviemientos
GROUP BY Articulo , Almacen
) T2

on t1.almacen = t2.almacen
and t1.sumadeventa = t2.sumadeventa

group by t1.almacen,t2.articulo






Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"Darinka" escribió en el mensaje
news:
> Gracias por la ayuda que me puedas brindar.
>
> 1 Tengo una table con mas de 5 millones de registros
>
> Estructura :
> Tengo 3 columnas basicas en una tabla (Movimiento)
> 1 Codigo del Articulo (Articulo)
> 2. Cod del Almacen (almacen)
> 3 Venta del articulo en el almacen (Venta)
>
> Notas:
> * Un articulo puede tener 1 o n ventas en el almacen pero puede ser
> vendido en muchos almacenes
> * El precio de un articulo no es fijo depende de la cantidad que compra
> el cliente y en un almacen se pueden tener n ventas del mismo articulo.
>
> Ejemplo
>
> Articulo Almacen venta
> 235 1 3
> 524 1 582
> 524 1 58
> 597 1 5447
> 478 2 56
> 654 2 3587
> 654 2 23
> 479 3 500
>
>
> Pregunta 1.
>
> * Necesitor encontrar el articulo que mas se vendio por almacen
> (Articulo, Almacen, Tot de la Venta) y cuanto fue el valor de la venta
> de ese articulo, (si tiene mas de una venta en el almacen sumar las
> ventas del articulo en el almacen para el calculo).
>
> *Si dos articulos tienen igual venta en el almacen deben salir los dos
> o indicar el numero de veces que se repitio esta venta
>
>
>
>
> Esto deberia dar algo asi :
> 1, sume la venta del articulo por almacen
>
> Articulo Almacen venta
> 235 1 3
> 524 1 640
> 597 1 5447
> 478 2 56
> 654 2 3610
> 479 3 500
>
> Fue simple solo agrupe por almacen y por articulo y sume la venta
>
> SELECT Articulo , Almacen, Sum(venta) AS SumaDeventa
> FROM Moviemientos
> GROUP BY Articulo , Almacen
>
>
> Pregunta 2.
> Encontrar el articulo mas vendido por almacen y el valor de la venta.
> Articulo Almacen venta
> 597 1 5447
> 654 2 3610
> 479 3 500
>
> Esta es la que no se como hacerla gracias por la ayuda
>
Respuesta Responder a este mensaje
#3 Maxi
08/11/2006 - 14:27 | Informe spam
Tenes toda la razon, fue el apuro :(, fijate este ejemplo:

=

CREATE TABLE #MOV (ARTICULO INT, ALMACEN INT, VENTA BIGINT)

GO

INSERT INTO #MOV VALUES (1,1,100)

INSERT INTO #MOV VALUES (1,1,300)

INSERT INTO #MOV VALUES (2,1,500)

INSERT INTO #MOV VALUES (1,2,100)

INSERT INTO #MOV VALUES (1,2,300)

INSERT INTO #MOV VALUES (3,2,100)

select tr2.* from

(

select max(t1.venta) as venta,t1.almacen

from

(select articulo,almacen,sum(venta) as venta

from #mov group by articulo,almacen) t1

group by t1.almacen

) tr

inner join

(select articulo,almacen,sum(venta) as venta

from #mov group by articulo,almacen) tr2 on


tr.almacen = tr2.almacen and

tr.venta = tr2.venta



==


Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"Darinka" escribió en el mensaje
news:
Hola Maxi gracias por la ayuda
Este fue el resultado.
valor almacen articulo
3 1 235
640 1 524
5447 1 597
56 2 478
3610 2 654
500 3 479

Trajo la sumatoria paro trajo todos los valores como podriamos filtrar
para encontrar el articulo mas vendido por almacen

Que para el caso seria.
valor almacen articulo
5447 1 597
3610 2 654
500 3 479

como crees que se pueda enocntrar esta informacion mediante la consulta
?



Maxi ha escrito:

Hola, proba con esto:

select max(t1.sumedeventa) as valor,t1.almacen,t2.articulo FROM
(
SELECT Articulo , Almacen, Sum(venta) AS SumaDeventa
FROM Moviemientos
GROUP BY Articulo , Almacen
) T1

inner join

(
SELECT Articulo , Almacen, Sum(venta) AS SumaDeventa
FROM Moviemientos
GROUP BY Articulo , Almacen
) T2

on t1.almacen = t2.almacen
and t1.sumadeventa = t2.sumadeventa

group by t1.almacen,t2.articulo






Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"Darinka" escribió en el mensaje
news:
> Gracias por la ayuda que me puedas brindar.
>
> 1 Tengo una table con mas de 5 millones de registros
>
> Estructura :
> Tengo 3 columnas basicas en una tabla (Movimiento)
> 1 Codigo del Articulo (Articulo)
> 2. Cod del Almacen (almacen)
> 3 Venta del articulo en el almacen (Venta)
>
> Notas:
> * Un articulo puede tener 1 o n ventas en el almacen pero puede ser
> vendido en muchos almacenes
> * El precio de un articulo no es fijo depende de la cantidad que compra
> el cliente y en un almacen se pueden tener n ventas del mismo articulo.
>
> Ejemplo
>
> Articulo Almacen venta
> 235 1 3
> 524 1 582
> 524 1 58
> 597 1 5447
> 478 2 56
> 654 2 3587
> 654 2 23
> 479 3 500
>
>
> Pregunta 1.
>
> * Necesitor encontrar el articulo que mas se vendio por almacen
> (Articulo, Almacen, Tot de la Venta) y cuanto fue el valor de la venta
> de ese articulo, (si tiene mas de una venta en el almacen sumar las
> ventas del articulo en el almacen para el calculo).
>
> *Si dos articulos tienen igual venta en el almacen deben salir los dos
> o indicar el numero de veces que se repitio esta venta
>
>
>
>
> Esto deberia dar algo asi :
> 1, sume la venta del articulo por almacen
>
> Articulo Almacen venta
> 235 1 3
> 524 1 640
> 597 1 5447
> 478 2 56
> 654 2 3610
> 479 3 500
>
> Fue simple solo agrupe por almacen y por articulo y sume la venta
>
> SELECT Articulo , Almacen, Sum(venta) AS SumaDeventa
> FROM Moviemientos
> GROUP BY Articulo , Almacen
>
>
> Pregunta 2.
> Encontrar el articulo mas vendido por almacen y el valor de la venta.
> Articulo Almacen venta
> 597 1 5447
> 654 2 3610
> 479 3 500
>
> Esta es la que no se como hacerla gracias por la ayuda
>
Respuesta Responder a este mensaje
#4 Darinka
08/11/2006 - 14:56 | Informe spam
Bien maxi
muy bien
modifique algunos nombres que generaron conflicto pero cosas muy
insignificantes nada de fondo.

como crees que podemos controlar si existen dos articulos en el almcen
que lograron la venta maximo ? es posible tener un count de las veces
que se repite el maximo o que salgan los dos valores en la lista.



Lo que modifique.


select tr2.* from

( select max(t1.ventas) as ventas2,t1.almacen
from

(select articulo,almacen,sum(venta) as ventas
from Moviemientos group by articulo,almacen) t1


group by t1.almacen
) tr

inner join
(select articulo,almacen,sum(venta) as ventas
from Moviemientos group by articulo,almacen) tr2
on
tr.almacen = tr2.almacen and
tr.ventas2 = tr2.ventas







Maxi ha escrito:

Tenes toda la razon, fue el apuro :(, fijate este ejemplo:

=>

CREATE TABLE #MOV (ARTICULO INT, ALMACEN INT, VENTA BIGINT)

GO

INSERT INTO #MOV VALUES (1,1,100)

INSERT INTO #MOV VALUES (1,1,300)

INSERT INTO #MOV VALUES (2,1,500)

INSERT INTO #MOV VALUES (1,2,100)

INSERT INTO #MOV VALUES (1,2,300)

INSERT INTO #MOV VALUES (3,2,100)

select tr2.* from

(

select max(t1.venta) as venta,t1.almacen

from

(select articulo,almacen,sum(venta) as venta

from #mov group by articulo,almacen) t1

group by t1.almacen

) tr

inner join

(select articulo,almacen,sum(venta) as venta

from #mov group by articulo,almacen) tr2 on


tr.almacen = tr2.almacen and

tr.venta = tr2.venta



==>


Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"Darinka" escribió en el mensaje
news:
Hola Maxi gracias por la ayuda
Este fue el resultado.
valor almacen articulo
3 1 235
640 1 524
5447 1 597
56 2 478
3610 2 654
500 3 479

Trajo la sumatoria paro trajo todos los valores como podriamos filtrar
para encontrar el articulo mas vendido por almacen

Que para el caso seria.
valor almacen articulo
5447 1 597
3610 2 654
500 3 479

como crees que se pueda enocntrar esta informacion mediante la consulta
?



Maxi ha escrito:

> Hola, proba con esto:
>
> select max(t1.sumedeventa) as valor,t1.almacen,t2.articulo FROM
> (
> SELECT Articulo , Almacen, Sum(venta) AS SumaDeventa
> FROM Moviemientos
> GROUP BY Articulo , Almacen
> ) T1
>
> inner join
>
> (
> SELECT Articulo , Almacen, Sum(venta) AS SumaDeventa
> FROM Moviemientos
> GROUP BY Articulo , Almacen
> ) T2
>
> on t1.almacen = t2.almacen
> and t1.sumadeventa = t2.sumadeventa
>
> group by t1.almacen,t2.articulo
>
>
>
>
>
>
> Salu2
>
> Microsoft MVP SQL Server
> Culminis Speaker
> INETA Speaker
>
> "Darinka" escribió en el mensaje
> news:
> > Gracias por la ayuda que me puedas brindar.
> >
> > 1 Tengo una table con mas de 5 millones de registros
> >
> > Estructura :
> > Tengo 3 columnas basicas en una tabla (Movimiento)
> > 1 Codigo del Articulo (Articulo)
> > 2. Cod del Almacen (almacen)
> > 3 Venta del articulo en el almacen (Venta)
> >
> > Notas:
> > * Un articulo puede tener 1 o n ventas en el almacen pero puede ser
> > vendido en muchos almacenes
> > * El precio de un articulo no es fijo depende de la cantidad que compra
> > el cliente y en un almacen se pueden tener n ventas del mismo articulo.
> >
> > Ejemplo
> >
> > Articulo Almacen venta
> > 235 1 3
> > 524 1 582
> > 524 1 58
> > 597 1 5447
> > 478 2 56
> > 654 2 3587
> > 654 2 23
> > 479 3 500
> >
> >
> > Pregunta 1.
> >
> > * Necesitor encontrar el articulo que mas se vendio por almacen
> > (Articulo, Almacen, Tot de la Venta) y cuanto fue el valor de la venta
> > de ese articulo, (si tiene mas de una venta en el almacen sumar las
> > ventas del articulo en el almacen para el calculo).
> >
> > *Si dos articulos tienen igual venta en el almacen deben salir los dos
> > o indicar el numero de veces que se repitio esta venta
> >
> >
> >
> >
> > Esto deberia dar algo asi :
> > 1, sume la venta del articulo por almacen
> >
> > Articulo Almacen venta
> > 235 1 3
> > 524 1 640
> > 597 1 5447
> > 478 2 56
> > 654 2 3610
> > 479 3 500
> >
> > Fue simple solo agrupe por almacen y por articulo y sume la venta
> >
> > SELECT Articulo , Almacen, Sum(venta) AS SumaDeventa
> > FROM Moviemientos
> > GROUP BY Articulo , Almacen
> >
> >
> > Pregunta 2.
> > Encontrar el articulo mas vendido por almacen y el valor de la venta.
> > Articulo Almacen venta
> > 597 1 5447
> > 654 2 3610
> > 479 3 500
> >
> > Esta es la que no se como hacerla gracias por la ayuda
> >
Respuesta Responder a este mensaje
#5 Maxi
08/11/2006 - 15:00 | Informe spam

Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"Darinka" escribió en el mensaje
news:
Bien maxi
muy bien
modifique algunos nombres que generaron conflicto pero cosas muy
insignificantes nada de fondo.

como crees que podemos controlar si existen dos articulos en el almcen
que lograron la venta maximo ? es posible tener un count de las veces
que se repite el maximo o que salgan los dos valores en la lista.



Lo que modifique.


select tr2.* from

( select max(t1.ventas) as ventas2,t1.almacen
from

(select articulo,almacen,sum(venta) as ventas
from Moviemientos group by articulo,almacen) t1


group by t1.almacen
) tr

inner join
(select articulo,almacen,sum(venta) as ventas
from Moviemientos group by articulo,almacen) tr2
on
tr.almacen = tr2.almacen and
tr.ventas2 = tr2.ventas







Maxi ha escrito:

Tenes toda la razon, fue el apuro :(, fijate este ejemplo:

=>

CREATE TABLE #MOV (ARTICULO INT, ALMACEN INT, VENTA BIGINT)

GO

INSERT INTO #MOV VALUES (1,1,100)

INSERT INTO #MOV VALUES (1,1,300)

INSERT INTO #MOV VALUES (2,1,500)

INSERT INTO #MOV VALUES (1,2,100)

INSERT INTO #MOV VALUES (1,2,300)

INSERT INTO #MOV VALUES (3,2,100)

select tr2.* from

(

select max(t1.venta) as venta,t1.almacen

from

(select articulo,almacen,sum(venta) as venta

from #mov group by articulo,almacen) t1

group by t1.almacen

) tr

inner join

(select articulo,almacen,sum(venta) as venta

from #mov group by articulo,almacen) tr2 on


tr.almacen = tr2.almacen and

tr.venta = tr2.venta



==>


Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"Darinka" escribió en el mensaje
news:
Hola Maxi gracias por la ayuda
Este fue el resultado.
valor almacen articulo
3 1 235
640 1 524
5447 1 597
56 2 478
3610 2 654
500 3 479

Trajo la sumatoria paro trajo todos los valores como podriamos filtrar
para encontrar el articulo mas vendido por almacen

Que para el caso seria.
valor almacen articulo
5447 1 597
3610 2 654
500 3 479

como crees que se pueda enocntrar esta informacion mediante la consulta
?



Maxi ha escrito:

> Hola, proba con esto:
>
> select max(t1.sumedeventa) as valor,t1.almacen,t2.articulo FROM
> (
> SELECT Articulo , Almacen, Sum(venta) AS SumaDeventa
> FROM Moviemientos
> GROUP BY Articulo , Almacen
> ) T1
>
> inner join
>
> (
> SELECT Articulo , Almacen, Sum(venta) AS SumaDeventa
> FROM Moviemientos
> GROUP BY Articulo , Almacen
> ) T2
>
> on t1.almacen = t2.almacen
> and t1.sumadeventa = t2.sumadeventa
>
> group by t1.almacen,t2.articulo
>
>
>
>
>
>
> Salu2
>
> Microsoft MVP SQL Server
> Culminis Speaker
> INETA Speaker
>
> "Darinka" escribió en el mensaje
> news:
> > Gracias por la ayuda que me puedas brindar.
> >
> > 1 Tengo una table con mas de 5 millones de registros
> >
> > Estructura :
> > Tengo 3 columnas basicas en una tabla (Movimiento)
> > 1 Codigo del Articulo (Articulo)
> > 2. Cod del Almacen (almacen)
> > 3 Venta del articulo en el almacen (Venta)
> >
> > Notas:
> > * Un articulo puede tener 1 o n ventas en el almacen pero puede ser
> > vendido en muchos almacenes
> > * El precio de un articulo no es fijo depende de la cantidad que
> > compra
> > el cliente y en un almacen se pueden tener n ventas del mismo
> > articulo.
> >
> > Ejemplo
> >
> > Articulo Almacen venta
> > 235 1 3
> > 524 1 582
> > 524 1 58
> > 597 1 5447
> > 478 2 56
> > 654 2 3587
> > 654 2 23
> > 479 3 500
> >
> >
> > Pregunta 1.
> >
> > * Necesitor encontrar el articulo que mas se vendio por almacen
> > (Articulo, Almacen, Tot de la Venta) y cuanto fue el valor de la
> > venta
> > de ese articulo, (si tiene mas de una venta en el almacen sumar las
> > ventas del articulo en el almacen para el calculo).
> >
> > *Si dos articulos tienen igual venta en el almacen deben salir los dos
> > o indicar el numero de veces que se repitio esta venta
> >
> >
> >
> >
> > Esto deberia dar algo asi :
> > 1, sume la venta del articulo por almacen
> >
> > Articulo Almacen venta
> > 235 1 3
> > 524 1 640
> > 597 1 5447
> > 478 2 56
> > 654 2 3610
> > 479 3 500
> >
> > Fue simple solo agrupe por almacen y por articulo y sume la venta
> >
> > SELECT Articulo , Almacen, Sum(venta) AS SumaDeventa
> > FROM Moviemientos
> > GROUP BY Articulo , Almacen
> >
> >
> > Pregunta 2.
> > Encontrar el articulo mas vendido por almacen y el valor de la venta.
> > Articulo Almacen venta
> > 597 1 5447
> > 654 2 3610
> > 479 3 500
> >
> > Esta es la que no se como hacerla gracias por la ayuda
> >
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida