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

[SOLUCIONADO] Máximo de una suma, con un campo asociado

Estas en el tema de Máximo de una suma, con un campo asociado en el foro de Mysql en Foros del Web. Hola a todos, Agradecería que alguien me pudiera echar una mano con una consulta que no acabo de tener clara. Tengo una tabla llamada tablapuntos, ...
  #1 (permalink)  
Antiguo 10/06/2015, 15:23
 
Fecha de Ingreso: marzo-2004
Mensajes: 34
Antigüedad: 20 años, 1 mes
Puntos: 0
Máximo de una suma, con un campo asociado

Hola a todos,

Agradecería que alguien me pudiera echar una mano con una consulta que no acabo de tener clara.

Tengo una tabla llamada tablapuntos, con estos datos:


Mi intención es sacar de cada cliente, la promoción en la que tiene la mayor suma de puntos. O sea, el resultado que me interesaría con estos datos sería:
Cliente 1 - Promoción 22 - Suma de puntos 675
Cliente 2 - Promoción 23 - Suma de puntos 1000

Tengo esta consulta:

Código SQL:
Ver original
  1. SELECT idcliente, idpromocion, MAX(sumapuntos) FROM
  2. (SELECT idcliente, idpromocion, SUM(puntos) AS sumapuntos FROM `tablapuntos` GROUP BY idcliente, idpromocion) AS sumadepuntos
  3. GROUP BY idcliente

Pero el resultado es este:


O sea, no me muestra la promoción correcta, y no se cómo sacarla.

Gracias de nuevo por cualquier ayuda. Un saludo.

Última edición por gnzsoloyo; 11/06/2015 a las 10:00
  #2 (permalink)  
Antiguo 10/06/2015, 15:32
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Máximo de una suma, con un campo asociado

Código MySQL:
Ver original
  1. SELECT idcliente, idpromocion, MAX(sumapuntos) FROM
  2. (SELECT  idpromocion, SUM(puntos) AS sumapuntos FROM `tablapuntos` GROUP BY  idpromocion) AS sumadepuntos
  3. GROUP BY idcliente

prueba con algo asi
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 10/06/2015, 15:56
 
Fecha de Ingreso: marzo-2004
Mensajes: 34
Antigüedad: 20 años, 1 mes
Puntos: 0
Respuesta: Máximo de una suma, con un campo asociado

Gracias por la respuesta y por la rapidez.

La consulta da error:
#1054 - Unknown column 'idcliente' in 'field list'

Por lo que parece, busca "idcliente" en la consulta anidada. Si añado "idcliente" en esta consulta anidada, me suma todas las cantidades de las promociones, da igual el cliente.

Un saludo.
  #4 (permalink)  
Antiguo 11/06/2015, 08:29
 
Fecha de Ingreso: febrero-2015
Mensajes: 89
Antigüedad: 9 años, 2 meses
Puntos: 1
Respuesta: Máximo de una suma, con un campo asociado

Se olvido de agregarle ese campo. :)
  #5 (permalink)  
Antiguo 11/06/2015, 09:52
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Máximo de una suma, con un campo asociado

todo por querer hacerlo sencillo, aqui esta la solucion:

Código MySQL:
Ver original
  1. select t1.id_cliente,t2.id_promocion,t1.maximo from(
  2. select max(suma) as maximo,id_cliente from (
  3. select id_cliente,id_promocion,sum(puntos) as suma from #temp group by id_cliente,id_promocion
  4. ) as t1 group by id_cliente) as t1
  5. (select id_cliente,id_promocion,sum(puntos) as suma from #temp group by id_cliente,id_promocion) as t2 on (t1.maximo=t2.suma)

Resultado:

id_cliente id_promocion maximo
1 22 675
2 23 1000

saludos!

P.D: cambia el nombre de la tabla y el nombre de los campos por los que TU estas usando
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #6 (permalink)  
Antiguo 11/06/2015, 10:34
 
Fecha de Ingreso: marzo-2004
Mensajes: 34
Antigüedad: 20 años, 1 mes
Puntos: 0
Respuesta: Máximo de una suma, con un campo asociado

Solución perfecta. Te lo agradezco un montón. Un saludo.

Etiquetas: campo, select, suma, tabla
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 13:23.