Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

agrupar suma de cantidades de acuerdo a un precio

Estas en el tema de agrupar suma de cantidades de acuerdo a un precio en el foro de Mysql en Foros del Web. Tengo una tabla con la venta de unos articulos que se han vendido a diferentes precios items_vendidos id|item|precio|cantidad 1|0001|5.00|3 2|0002|2.00|2 3|0001|8.00|2 4|0003|5.00|7 5|0001|8.00|4 6|0003|5.00|3 7|0002|4.00|3 ...
  #1 (permalink)  
Antiguo 21/06/2012, 21:54
 
Fecha de Ingreso: junio-2005
Mensajes: 28
Antigüedad: 19 años, 5 meses
Puntos: 1
agrupar suma de cantidades de acuerdo a un precio

Tengo una tabla con la venta de unos articulos que se han vendido a diferentes precios
items_vendidos
id|item|precio|cantidad
1|0001|5.00|3
2|0002|2.00|2
3|0001|8.00|2
4|0003|5.00|7
5|0001|8.00|4
6|0003|5.00|3
7|0002|4.00|3

Quisiera obtener un historico por precio de los items vendidos que quedara de la siguiente forma:
item|historico por precio
0001|3x5.00-4x8.00
0002|2x2.00-3x4.00
0003|10x5.00

pense en el query
Código:
select distinct(item), group_concat(distinct(precio),sum(cantidad) separator '-')
from items_vendidos
group by item
Pero me da un error
Si alguien puede ayudarme le agradecere
  #2 (permalink)  
Antiguo 22/06/2012, 02:34
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: agrupar suma de cantidades de acuerdo a un precio

Código MySQL:
Ver original
  1. SELECT item,precio,sum(cantidad) as vendidos
  2. FROM items_vendidos
  3. GROUP BY item,precio;

item|precio|vendidos
0001|5.00|3
0001|8.00|6
0002|2.00|2
0002|4.00|3
0003|5.00|10


Te sirve?
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 22/06/2012, 04:31
 
Fecha de Ingreso: junio-2005
Mensajes: 28
Antigüedad: 19 años, 5 meses
Puntos: 1
Respuesta: agrupar suma de cantidades de acuerdo a un precio

Cita:
Iniciado por quimfv Ver Mensaje
Código MySQL:
Ver original
  1. SELECT item,precio,sum(cantidad) as vendidos
  2. FROM items_vendidos
  3. GROUP BY item,precio;

item|precio|vendidos
0001|5.00|3
0001|8.00|6
0002|2.00|2
0002|4.00|3
0003|5.00|10


Te sirve?
Gracias amigo pero no me sirve, requiero que esten concatenados las cantidades ascociadas a los diferentes precios y agrupadas por item.
item|historico por precio
0001|3x5.00-4x8.00
0002|2x2.00-3x4.00
0003|10x5.00
  #4 (permalink)  
Antiguo 22/06/2012, 05:22
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: agrupar suma de cantidades de acuerdo a un precio

Cita:
Iniciado por galarraga Ver Mensaje
Gracias amigo pero no me sirve, requiero que esten concatenados las cantidades ascociadas a los diferentes precios y agrupadas por item.
item|historico por precio
0001|3x5.00-4x8.00
0002|2x2.00-3x4.00
0003|10x5.00
Te aconsejo que uses programacion externa para formatear la salida... a partir de la query que te he pasado es relativamente facil....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #5 (permalink)  
Antiguo 22/06/2012, 09:16
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses
Puntos: 447
Respuesta: agrupar suma de cantidades de acuerdo a un precio

Hola galarraga:

La idea que tenías no estaba del todo errada, sin embargo desde mi punto de vista tienes que hacer dos agrupaciones... en tu tabla tienes dos registros para el item 0001 y el precio 8.00

Código MySQL:
Ver original
  1. +------+------+--------+----------+
  2. | id   | item | precio | cantidad |
  3. +------+------+--------+----------+
  4. |    3 | 0001 |   8.00 |        2 |
  5. |    5 | 0001 |   8.00 |        4 |
  6. +------+------+--------+----------+

Por lo tanto, tendrías que sumar primero las cantidades... La consulta que requieres quedaría entonces más o menos así:

Código MySQL:
Ver original
  1. mysql> select * from tabla;
  2. +------+------+--------+----------+
  3. | id   | item | precio | cantidad |
  4. +------+------+--------+----------+
  5. |    1 | 0001 |   5.00 |        3 |
  6. |    2 | 0002 |   2.00 |        2 |
  7. |    3 | 0001 |   8.00 |        2 |
  8. |    4 | 0003 |   5.00 |        7 |
  9. |    5 | 0001 |   8.00 |        4 |
  10. |    6 | 0003 |   5.00 |        3 |
  11. |    7 | 0002 |   4.00 |        3 |
  12. +------+------+--------+----------+
  13. 7 rows in set (0.01 sec)
  14.  
  15. mysql> select
  16.     ->    T.item,
  17.     ->    group_concat(concat(T.cantidad, "x", T.precio) separator "-") historico
  18.     -> from
  19.     ->   (select item, precio, sum(cantidad) cantidad
  20.     ->    from tabla
  21.     ->    group by item, precio) T
  22.     -> group by item;
  23. +------+---------------+
  24. | item | historico     |
  25. +------+---------------+
  26. | 0001 | 3x5.00-6x8.00 |
  27. | 0002 | 2x2.00-3x4.00 |
  28. | 0003 | 10x5.00       |
  29. +------+---------------+
  30. 3 rows in set (0.00 sec)

Observa que la subconsulta marcada como T es en realidad la consulta que te había proporcionado quimfv, el resto sólo fue cuestión de volver a agrupar y darle el formato deseado.

Saludos
Leo.
  #6 (permalink)  
Antiguo 22/06/2012, 18:18
 
Fecha de Ingreso: junio-2005
Mensajes: 28
Antigüedad: 19 años, 5 meses
Puntos: 1
Respuesta: agrupar suma de cantidades de acuerdo a un precio

Cita:
Iniciado por leonardo_josue Ver Mensaje
Hola galarraga:

La idea que tenías no estaba del todo errada, sin embargo desde mi punto de vista tienes que hacer dos agrupaciones... en tu tabla tienes dos registros para el item 0001 y el precio 8.00

Código MySQL:
Ver original
  1. +------+------+--------+----------+
  2. | id   | item | precio | cantidad |
  3. +------+------+--------+----------+
  4. |    3 | 0001 |   8.00 |        2 |
  5. |    5 | 0001 |   8.00 |        4 |
  6. +------+------+--------+----------+

Por lo tanto, tendrías que sumar primero las cantidades... La consulta que requieres quedaría entonces más o menos así:

Código MySQL:
Ver original
  1. mysql> select * from tabla;
  2. +------+------+--------+----------+
  3. | id   | item | precio | cantidad |
  4. +------+------+--------+----------+
  5. |    1 | 0001 |   5.00 |        3 |
  6. |    2 | 0002 |   2.00 |        2 |
  7. |    3 | 0001 |   8.00 |        2 |
  8. |    4 | 0003 |   5.00 |        7 |
  9. |    5 | 0001 |   8.00 |        4 |
  10. |    6 | 0003 |   5.00 |        3 |
  11. |    7 | 0002 |   4.00 |        3 |
  12. +------+------+--------+----------+
  13. 7 rows in set (0.01 sec)
  14.  
  15. mysql> select
  16.     ->    T.item,
  17.     ->    group_concat(concat(T.cantidad, "x", T.precio) separator "-") historico
  18.     -> from
  19.     ->   (select item, precio, sum(cantidad) cantidad
  20.     ->    from tabla
  21.     ->    group by item, precio) T
  22.     -> group by item;
  23. +------+---------------+
  24. | item | historico     |
  25. +------+---------------+
  26. | 0001 | 3x5.00-6x8.00 |
  27. | 0002 | 2x2.00-3x4.00 |
  28. | 0003 | 10x5.00       |
  29. +------+---------------+
  30. 3 rows in set (0.00 sec)

Observa que la subconsulta marcada como T es en realidad la consulta que te había proporcionado quimfv, el resto sólo fue cuestión de volver a agrupar y darle el formato deseado.

Saludos
Leo.
Excelente respuesta, si me sirvio. Gracias

Etiquetas: acuerdo, agrupar, precio, select, suma, tabla, cantidad
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:18.