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

Suma de una Consulta

Estas en el tema de Suma de una Consulta en el foro de Mysql en Foros del Web. Estimados compañeros, acudo a ustedes en busca de alguna ayuda en el siguiente tema: Suma de una Consulta Actualmente tengo una tabla con estos datos ...
  #1 (permalink)  
Antiguo 20/02/2012, 15:44
Avatar de pepejaguar  
Fecha de Ingreso: enero-2005
Ubicación: Guatemala
Mensajes: 76
Antigüedad: 19 años, 3 meses
Puntos: 0
Pregunta Suma de una Consulta

Estimados compañeros, acudo a ustedes en busca de alguna ayuda en el siguiente tema:

Suma de una Consulta

Actualmente tengo una tabla con estos datos

id - fecha - dia - datos
01 | 2012-02-01 | 3 | 100
02 | 2012-02-02 | 4 | 150
03 | 2012-02-03 | 5 | 800
04 | 2012-02-04 | 6 | 450
05 | 2012-02-05 | 0 | 320
06 | 2012-02-06 | 1 | 140
07 | 2012-02-07 | 2 | 400
08 | 2012-02-08 | 3 | 160
09 | 2012-02-09 | 4 | 160
10 | 2012-02-10 | 5 | 660
11 | 2012-02-11 | 6 | 720
12 | 2012-02-12 | 0 | 130
13 | 2012-02-13 | 1 | 170

Hay muchos mas datos, pero para el ejemplo es suficiente.

Por ejemplo si deseo conocer los datos del día lunes, en sus dos últimas fechas, hago esta consulta:

SELECT * FROM tabla WHERE dia = 1 ORDER BY fecha DESC LIMIT 2

El resultado será:

06 | 2012-02-06 | 1 | 140
13 | 2012-02-13 | 1 | 170

Pero a mi lo que me interesa, es obtener el resultado de la suma de la columna datos de esta consulta, es decir 140+170

La pregunta es: ¿que tipo de consulta debo hacer, que me arroje el resultado de la suma de esa consulta específica?

Muchas gracias por la ayuda.

Saludos.
  #2 (permalink)  
Antiguo 20/02/2012, 16:19
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Suma de una Consulta

Hola pepejaguar:

Esa pregunta es básica en SQL, me sorprende que tengas que acudir a un foro de consulta a preguntarla.

La función se llama SUM(), es una función de agregación y lo que quieres hacer es tan simple como poner esto:


Código MySQL:
Ver original
  1. SELECT sum(datos) FROM tabla WHERE dia = 1

Mucho ojo con la cláusula LIMIT, tal como lo estás poniendo sólo estás seleccionando los primeros dos registros... si existieran más registros con dia = 1 no los sumarizaría.

Saludos
Leo.
  #3 (permalink)  
Antiguo 04/03/2012, 14:26
Avatar de pepejaguar  
Fecha de Ingreso: enero-2005
Ubicación: Guatemala
Mensajes: 76
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: Suma de una Consulta

Leonardo_josue

Lamento que no hayas leído y comprendido bien el problema, como lo indiqué en la premisa, lo que necesito es la suma de los dos últimos registros, según la fecha.

Esa consulta que has publicado, suma todos, yo necesito, los últimos dos

Gracias.
  #4 (permalink)  
Antiguo 04/03/2012, 15:07
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Suma de una Consulta

Cita:
Esa consulta que has publicado, suma todos, yo necesito, los últimos dos
Pepejuar: desde el momento en que la consulta que Leonardo te pone, tiene la condición
Código MySQL:
Ver original
  1. WHERE dia = 1
, solo sumará esos dos registros, porque son los únicos que cumplen esa condición.
Por si no lo has notado...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 04/03/2012, 16:17
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Suma de una Consulta

Si se entiende que hay o puede haber más lunes, y deseas solo la suma de los dos últimos lunes, tal vez esto:
Código MySQL:
Ver original
  1. SELECT SUM(t.datos) total FROM
  2.  (SELECT datos FROM tabla WHERE dia = 1
  3.    ORDER BY fecha DESC LIMIT 2 )t

Última edición por jurena; 05/03/2012 a las 17:14
  #6 (permalink)  
Antiguo 05/03/2012, 09:45
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Suma de una Consulta

Hola pepejaguar:

Tal como ya te lo hizo notar gnzsoloyo, la consulta que yo te puse cumple con lo que pedías en tu post, que era sumar los registros 140 y 170, aquí están las comparaciones de la consulta y la que te propone acertadamente jurena:

Código MySQL:
Ver original
  1. mysql> SELECT sum(datos) FROM tabla WHERE dia = 1;
  2. +------------+
  3. | sum(datos) |
  4. +------------+
  5. |        310 |
  6. +------------+
  7. 1 row in set (0.00 sec)
  8.  
  9. mysql> SELECT SUM(t.datos) total FROM
  10.     -> (SELECT datos FROM tabla WHERE dia = 1
  11.     -> ORDER BY fecha DESC LIMIT 2 )t;
  12. +-------+
  13. | total |
  14. +-------+
  15. |   310 |
  16. +-------+
  17. 1 row in set (0.02 sec)


Quizás como dices, no leí ni comprendí correctamente tu problema y me basé sólo en los datos que pusiste de ejemplo. La solución del jurena es la correcta.

De cualquier manera Gracias por la valoración negativa... me motiva a seguir ayudando.

Saludos.
Leo.

Etiquetas: consulta-mysql-sum, suma
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 21:33.