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

sumar de otra tabla teniendo group by

Estas en el tema de sumar de otra tabla teniendo group by en el foro de Mysql en Foros del Web. Perdón si no me explico bien con el titular del post y sobre todo gracias de antemano a los profesionales de forosdelweb que ayudan sin ...
  #1 (permalink)  
Antiguo 13/08/2013, 05:49
 
Fecha de Ingreso: junio-2008
Mensajes: 165
Antigüedad: 15 años, 10 meses
Puntos: 6
sumar de otra tabla teniendo group by

Perdón si no me explico bien con el titular del post y sobre todo gracias de antemano a los profesionales de forosdelweb que ayudan sin ánimo de lucro a otros.

Mi problema es el siguiente:

Tengo una tabla webusers, y una tabla ventasporcliente. Actualemente tengo esta consulta que me genera grupos de edades a partir de la fecha de nacimiento:

Código MySQL:
Ver original
  1.         case when age >= 45 then 45
  2.         when age >= 31 then 31
  3.         when age >= 26 then 26
  4.         when age >= 18 then 18
  5.         else 0 end as age_groups
  6. (
  7. select FLOOR(DATEDIFF(CURRENT_DATE,`dateOfBirth`)/365) as age from users
  8. ) as u
  9. group by age_groups

Con esto consido tener una vista con: nusers, age_group

Pero ahora necesito añadir un campo más qué es amount (total gastado por el cliente) qué esta en otra tabla llamada ventasporcliente qué contiene: idClient, amount.

Cómo puedo modificar la consulta para que añadir un campo mas que sea amount y sea la suma de todo el amount de todos los ids que esten en un grupo?

Espero haberme explicado bien y si no es así no duden en hacermelo saber para qué pueda explicarme mejor.
  #2 (permalink)  
Antiguo 13/08/2013, 08:26
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: sumar de otra tabla teniendo group by

No he probado nada con datos. Es una propuesta al vuelo.
Código MySQL:
Ver original
  1. SELECT t2.age, SUM(t2.amount) FROM  (SELECT
  2.         CASE WHEN age >= 45 THEN 45
  3.         WHEN age >= 31 THEN 31
  4.         WHEN age >= 26 THEN 26
  5.         WHEN age >= 18 THEN 18
  6.         ELSE 0 END as age_groups, t1.amount
  7. (
  8. SELECT FLOOR(DATEDIFF(CURRENT_DATE,`dateOfBirth`)/365) as age, vc.amount FROM users INNER JOIN ventasporcliente vc ON users.idClient = vc.idClient
  9. ) t1) t2 GROUP BY t2.age

Etiquetas: campo, group, select, 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 15:25.