MySQL - Necesito ayuda para hacer estadisticas mensuales en mysql

 
Vista:

Necesito ayuda para hacer estadisticas mensuales en mysql

Publicado por juan (7 intervenciones) el 24/08/2011 05:41:00
hola

me gustaria recibir una ayudita por que yo ya no se por donde tirar:

quisiera hacer una estadistica sobre el material vendido mensualmente,

por ejemplo;

las tablas que utilizo son: articulos y materialvendido

codigo art --------descripcion-----------enero----febre-----etc

debajo del mes la cantidad vendida

resulta que en la forma en la que yo lo hago se me repite el codigo ejem:


codigo art --------descripcion-----------enero----febre-----etc
1 lapiz 3
2 borrador 8
1 lapiz 5

me gustaria saber como envez de que salgan dos lapices que solo me salga uno pero con la suma en enero lo correcto seria esto.


codigo art --------descripcion-----------enero----febre-----etc
1 lapiz 8
2 borrador 8

gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Necesito ayuda para hacer estadisticas mensuales en mysql

Publicado por martin (150 intervenciones) el 24/08/2011 06:39:20
GROUP BY Y SUM?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Necesito ayuda para hacer estadisticas mensuales en mysql

Publicado por juan (7 intervenciones) el 24/08/2011 14:05:05
hola martin gracias por tu contestacion pero aun falta una cosita que no se resolver, te puedes creer que se me habia olvidado el gruop by jeje? XD

mira este es el codigo

select a.codigo_articulo, a.denominacion, p.cantidad as 'marzo'
from pediclid p, articvta a
where p.articulo=a.codigo_articulo and p.cantidad in
(select cantidad from pediclid where fecha_ultima_entrega like "%%03/2011") group by p.articulo;

si hago esto me sale como debe ser pero sin la suma, claro esta por que falta el sum, la duda es la siguiente
cuando le pongo el sum en el primer p.cantidad me suma todo la cantidad de ese articulo aunque su fecha no sea
la que le pongo abajo en p.cantidad in, y si le pongo el sum bajo en (select sum(cantidad etc etc)) no me sale nada me sale todo not null

select a.codigo_articulo, a.denominacion, p.cantidad as 'marzo'
from pediclid p, articvta a
where p.articulo=a.codigo_articulo and p.cantidad in
(select cantidad from pediclid where fecha_ultima_entrega like "%%03/2011") group by p.articulo;


muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Necesito ayuda para hacer estadisticas mensuales en mysql

Publicado por juan (7 intervenciones) el 24/08/2011 16:23:01
Ya he podido hacer la primera consulta para sacar los articulos vendidos en marzo el codigo es este:


select a.codigo_articulo, a.denominacion,sum(p.cantidad) as 'marzo'
from pediclid p, articvta a
where p.articulo=a.codigo_articulo and fecha_ultima_entrega like "%%03/2011" group by a.codigo_articulo;

el problema esta que tambien quiero sacar en la misma consulta lo mismo pero de noviembre
osea que me saque ---a.codigo_articulo, a.denominacion,sum(p.cantidad) as 'marzo', sum(p.cantidad) as 'noviembre'

gracias
lo siento por escribir tanto pero esque es un proyecto del curso y me queda solo eso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Necesito ayuda para hacer estadisticas mensuales en mysql

Publicado por martin (150 intervenciones) el 24/08/2011 23:36:09
Bueno este problemas se resuleve muy facilmente con la instruccion PIVOT, pero es una tecnologia privativa de Microsoft, con lo cual no esta disponible en nuestro MYSQL.
Si vos tenes una tabla como IdArt,desc,fechadeventa,cantidad, lo que vos queres es pasar las filas a columnas.
Yo esto lo resuelvo con algo similiar pero no es dinamico como el PIVOT de MS.
La cosa es asi, creas vistas(o subconsultas ,es a gusto) de los meses, una para enero otro para febrero etc...
y despues lo "pivoteas" contra por ejemplo la tabla de articulos Ejmplo:


SELECT A.IdArt,A.Desc,E.Total_Enero,F.Total_Febreo,M.Total_Marzo,.....D.Total_Dic
FROM (((Articulos A
LEFT JOIN VW_Enero E ON A.IdArt=E.IdArt)
LEFT JOIN VW_Febre F ON A.IdArt=F.IdArt)
LEFT JOIN VW_Marzo M ON A.IdArt=M.IdArt)
.... asi hasta Diciembre

Las view tendrian que tenes los campos IdArt,Total_Enero por ejemplo en la view de enero.
Tambien seria bueno que tengan el año, asi en esta consulta filtras el año que te intenresa y te queda armado para el año que viene o para sacar ventas de otros años.
Tambien podes filtrar que no te traiga lo articulos que no tiene datos en ninguno de los meses si el catalogo es muy grande.

Tal vez hay alguna otra forma de hacerlo pero es la que se me ocurre a mi, tal vez con un sp se pueda resolver.

SAludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Necesito ayuda para hacer estadisticas mensuales en mysql

Publicado por juan (7 intervenciones) el 25/08/2011 03:09:27
muchas gracias mañana mismo lo pongo a prueba

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Necesito ayuda para hacer estadisticas mensuales en mysql

Publicado por juan (7 intervenciones) el 25/08/2011 04:54:55
lo e intentando pero soy muy burro, si me quieres seguir ayudando te lo agradeceria mucho

en la primera consulta me sale marzo y la suma todo correcto

select a.codigo_articulo, a.denominacion,sum(p.cantidad) as 'marzo'
from pediclid p, articvta a
where p.articulo=a.codigo_articulo and fecha_ultima_entrega like "%%03/2011" group by a.codigo_articulo;

en esta segunda quiero que me muestre los de marzo y noviembre, y lo e echo asi, no me sale ningun erro pero tampoco me sale nada se me quedan los campos vacios


select a.codigo_articulo, a.denominacion,sum(p.cantidad) as 'marzo',sum(p1.cantidad) as 'noviembre'
from pediclid p, articvta a,pediclid p1
where p.articulo=a.codigo_articulo and p.articulo=p1.articulo and
p.cantidad in
(select p.cantidad from pediclid p where p.fecha_ultima_entrega like "%%03/2011") and
p1.cantidad in
(select p1.cantidad from pediclid p1 where p1.fecha_ultima_entrega like "%%11/2011") group by p.articulo;

gracias por ayudarme tanto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Necesito ayuda para hacer estadisticas mensuales en mysql

Publicado por martin (150 intervenciones) el 25/08/2011 05:12:08
El calculo de los totales lo tenes que hacer en las subconsultas

Fijate en el ejmplo de pivot que te pase, no hay ningun group by por que este fue hecho en las subconsultas, reemplaza donde yo puse vw_enero por tu consulta

select a.codigo_articulo, a.denominacion,sum(p.cantidad) as 'marzo'
from pediclid p, articvta a
where p.articulo=a.codigo_articulo and fecha_ultima_entrega like "%%03/2011" group by a.codigo_articulo;

y asi con cada mes.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar