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

Consulta de contar y sumar por tramos.

Estas en el tema de Consulta de contar y sumar por tramos. en el foro de Bases de Datos General en Foros del Web. Taribo007, me facilitó el siguiente código 'SELECT Sum(IIf([Problema]>0,1,0)) AS campo1, Sum(IIf([Problema]=0,1,0)) AS campo2 FROM NombreTabla;" para poder contar, en una consulta, 2 veces el mismo ...
  #1 (permalink)  
Antiguo 07/02/2009, 07:52
 
Fecha de Ingreso: marzo-2007
Mensajes: 16
Antigüedad: 17 años, 1 mes
Puntos: 0
Consulta de contar y sumar por tramos.

Taribo007, me facilitó el siguiente código
'SELECT Sum(IIf([Problema]>0,1,0)) AS campo1, Sum(IIf([Problema]=0,1,0)) AS campo2
FROM NombreTabla;"
para poder contar, en una consulta, 2 veces el mismo campo -llamemosLe CAMPO1- de una tabla pero de forma diferente.

Me gustaría saber si con las correspondientes modificaciones del código podría hacer lo siguiente:

-Contar los registros del CAMPO1 que tengan valor '0'
-Contar los registros del CAMPO1 que estén comprendidos entre '1' y '100'
-Contar los registros del CAMPO1 que estén comprendidos entre '101 y '1000'
-Contar los registros del CAMPO1 superiores a '1000'

Así mismo, y en la misma consulta, querría poder sumar el total de otro campo diferente pero con los 'cortes' propuestos anteriormente, es decir:


-Sumar los registros del CAMPO2 que estén comprendidos entre '1' y '100'
-Sumar los registros del CAMPO2 que estén comprendidos entre '101 y '1000'
-Sumar los registros del CAMPO2 superiores a '1000'

Perdonad las molestias y muchas gracias por vuestra ayuda
  #2 (permalink)  
Antiguo 09/02/2009, 06:34
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Campo1 y campo2 son el resultado de la consulta anterior?? La que expones al principio de este hilo???

Es decir, quieres una consulta sobre esta misma en la que obtengas los resultados que explicas, es asi??

un saludo

Y todo en la misma consulta?? es decir, en una campo (campo1_1) los registros del CAMPO1 que tengan valor '0', en otro (campo1_2) los registros del CAMPO1 que estén comprendidos entre '1' y '100', en Campo1_3 los registros del CAMPO1 que estén comprendidos entre '101 y '1000' y en campo1_4 los registros del CAMPO1 superiores a '1000'???

Un saludo

Última edición por GatorV; 09/02/2009 a las 14:32
  #3 (permalink)  
Antiguo 09/02/2009, 09:18
 
Fecha de Ingreso: marzo-2007
Mensajes: 16
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Consulta de contar y sumar por tramos.

Hola Taribo007.
Te agradezco de nuevo tu ayuda. Muchas gracias.
Efectivamente, en principio, me gustaría que hubiera, en la misma consulta 4 campos de 'contar' y otros 4 campos que sumaran cada uno de los cortes del contar.
No obstante, me las podría arreglar, con solo los cuatro campos de 'suma', pues luego contaría los valores en el correspondiente Informe. No obstante lo ideal para mí sería la primera opción, pero no estoy en condiciones de pedir sino de rogar.
Muchas gracias por todo.
Un saludo.
  #4 (permalink)  
Antiguo 09/02/2009, 09:39
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: Consulta de contar y sumar por tramos.

Pa que me aclare, podrias poner un ejemplo con datos reales????

Un saludo
  #5 (permalink)  
Antiguo 09/02/2009, 10:07
 
Fecha de Ingreso: marzo-2007
Mensajes: 16
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Consulta de contar y sumar por tramos.

Taribo007, en primer lugar te agradezco tu interés por ayudarme. Muchas gracias.

El tema es el siguiente:

Tenemos los 'campo1' y 'campo2' en la tabla 'xxxx'

campo1 campo2
0 2222
101 3333
201 4444
301 5555
401 6666
501 7777
601 888
1000 9999999

Me gustaría una consulta, ejecutándose sobre los 'campo1' y 'campo2' en la tabla 'xxxx', de la manera siguiente:

(Campos a obtener en la consulta)

A) -Registros del 'campo1' a 'CONTAR'-

1- Que cuente los registros del 'campo1' con valor '0' -cero-. Llamemósle campo 'cuentaregistroiguala0'
2- Que cuente los registros del 'campo1' con valor comprendidos entre '1' y '200'.Llamemósle campo 'cuentaregistroentre1y200'.
3- Que cuente los registros del 'campo1' con valor comprendidos entre '201' y '500'.Llamemósle campo 'cuentaregistroentre201y500'.
4- Que cuente los registros del 'campo1' con valor comprendidos entre '501' y '600'.Llamemósle campo 'cuentaregistroentre501y600'.
5- Que cuente los registros del 'campo1' con valor superior a 600.Llamemósle campo 'cuentaregistrosuperiora600'.

Ahora debería sumar los cortes anteriores pero con los valores del 'campo2', de la forma siguiente:

-B)Registros del 'campo2' a 'SUMAR'-
1- Que sume los registros del 'campo2' con valor comprendidos entre '1' y '200'.Llamemósle campo 'sumaregistroentre1y200'.
2- Que sume los registros del 'campo2' con valor comprendidos entre '201' y '500'.Llamemósle campo 'sumaregistroentre201y500'.
3- Que sume los registros del 'campo2' con valor comprendidos entre '501' y '600'.Llamemósle campo 'sumaregistroentre501y600'.
4- Que sume los registros del 'campo2' con valor superior a 600.Llamemósle campo 'sumaregistrosuperiora600'.



Taribo007, muchas gracias de nuevo por tu interés en ayudarme.
Un cordial saludo
  #6 (permalink)  
Antiguo 09/02/2009, 10:23
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: Consulta de contar y sumar por tramos.

En la linea del ejemplo anterior:

SELECT Sum(IIf([campo1]=0,1,0)) AS cuentaregistroiguala0, Sum(IIf([campo1]>=1 And [campo1]<=200,1,0)) AS cuentaregistroentre1y200, Sum(IIf([campo1]>=201 And [campo1]<=500,1,0)) AS cuentaregistroentre201y500, Sum(IIf([campo1]>=501 And [campo1]<=600,1,0)) AS cuentaregistroentre501y600, Sum(IIf([campo1]>=600,1,0)) AS cuentaregistrosuperiora600, Sum(IIf([campo2]>=1 And [campo2]<=200,[campo2],0)) AS sumaregistroentre1y200, Sum(IIf([campo2]>=201 And [campo2]<=500,[campo2],0)) AS sumaregistroentre201y500, Sum(IIf([campo2]>=501 And [campo2]<=600,[campo2],0)) AS sumaregistroentre501y600, Sum(IIf([campo2]>=600,[campo2],0)) AS sumaregistrosuperiora600
FROM xxxx;

Pero creo que , en la segunda parte, las sumas, lo que quieres es:
1- Que sume los registros del 'campo2', para cuyo valor del campo1 este comprendidos entre '1' y '200'.Llamemósle campo 'sumaregistroentre1y200'.

Si es asi, hay que cambiar una cosita, si no, ya la tienes.

Prueba y nos cuentas

un saludo
  #7 (permalink)  
Antiguo 09/02/2009, 12:21
 
Fecha de Ingreso: marzo-2007
Mensajes: 16
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Consulta de contar y sumar por tramos.

Hola Taribo007.
Acabo de probar la solución que me has facilitado y creo funciona plenamente.
Te vuelvo a agradecer, una vez más, tu ayuda.Siento no poder ayudarte en este tema pero si necesitas alguna cosa y puedo serte de utilidad, quedo a tu disposición.
Cuando implante tu solución, al problema que tengo te informaré.
Muchas gracias.
Un cordial saludo.
  #8 (permalink)  
Antiguo 09/02/2009, 14:00
 
Fecha de Ingreso: marzo-2007
Mensajes: 16
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Consulta de contar y sumar por tramos.

Hola Taribo007.
Efectivamente tú tienes razón.
Con la solución actual, si en el 'campo1' se cuentan los registros con valores comprendios entre '1' y 200', y en el 'campo2' indicamos que queremos que nos sume los valores, por ejemplo, " >500 y <10000", nos va a sumar todos los registros, del 'campo2', de la tabla comprendidos en este rango (>500 y <10000), de tal manera que este criterio (>500 y <10000) no se limita a los registros del 'campo1' que cumplan la condicion " entre '1' y 200' ".

Yo lo que necesito es que establecidos los registros del 'campo1' que cumplan la condición, por ejemplo, de que cuente los registros '>1 y <200', me sume, exclusivamente, en el 'campo2' de la consulta el total de los valores de dichos registros (los comprendios entre "'>1 y <200' ".

Muchísimas gracias por tu ayuda y disculpa las molestias.

Un cordial saludo.
  #9 (permalink)  
Antiguo 10/02/2009, 02:28
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: Consulta de contar y sumar por tramos.

No es ninguna molestia Atente21. Ya suponia que seria asi, prueba con esta:

SELECT Sum(IIf([campo1]=0,1,0)) AS cuentaregistroiguala0, Sum(IIf([campo1]>=1 And [campo1]<=200,1,0)) AS cuentaregistroentre1y200, Sum(IIf([campo1]>=201 And [campo1]<=500,1,0)) AS cuentaregistroentre201y500, Sum(IIf([campo1]>=501 And [campo1]<=600,1,0)) AS cuentaregistroentre501y600, Sum(IIf([campo1]>=600,1,0)) AS cuentaregistrosuperiora600, Sum(IIf([campo1]>=1 And [campo1]<=200,[campo2],0)) AS sumaregistroentre1y200, Sum(IIf([campo1]>=201 And [campo1]<=500,[campo2],0)) AS sumaregistroentre201y500, Sum(IIf([campo1]>=501 And [campo1]<=600,[campo2],0)) AS sumaregistroentre501y600, Sum(IIf([campo1]>=600,[campo2],0)) AS sumaregistrosuperiora600
FROM xxxx;

Un saludo
  #10 (permalink)  
Antiguo 10/02/2009, 04:20
 
Fecha de Ingreso: marzo-2007
Mensajes: 16
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Consulta de contar y sumar por tramos.

Buenos días Taribo007.
Efectivamente la última solución es lo que necesitaba. Muchísimas gracias.
Te comento que ha sido un placer haber contactado contigo, por la forma y manera en la que, pacientemente, me has ayudado. Muchísimas gracias de nuevo y un cordial saludo.
  #11 (permalink)  
Antiguo 10/02/2009, 04:31
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: Consulta de contar y sumar por tramos.

Un placer haber sido de ayuda.

Un saludito
  #12 (permalink)  
Antiguo 10/02/2009, 09:58
 
Fecha de Ingreso: marzo-2007
Mensajes: 16
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Consulta de contar y sumar por tramos.

Hola Taribo007, soy el 'pesao' de siempre. Disculpa una vez más.

Me gustaría poder sumar también los registros que en el 'campo1' antiguo, en el código actual campo 'metros- tienen valor '0' -cero-, si bien en el 'campo2' antiguo, en el código actual campo 'elec_consumo2006' tienen valores positivos.

El código de la consulta adaptado a mi tablas es el siguiente

"
SELECT
Sum(IIf([metros]=0,1,0)) AS iguala0,
Sum(IIf([metros]>=0 And [metros]<=100000000000,1,0)) AS todos,
Sum(IIf([metros]>=1 And [metros]<=100,1,0)) AS entre1y100,
Sum(IIf([metros]>=101 And [metros]<=500,1,0)) AS entre101y500,
Sum(IIf([metros]>=501 And [metros]<=1000,1,0)) AS entre501y1000,
Sum(IIf([metros]>=1001 And [metros]<=5000,1,0)) AS entre1001y5000,
Sum(IIf([metros]>=5000,1,0)) AS superiora5000,



Sum(IIf([metros]>=1 And [metros]<=100,[elec_consumo2006],0)) AS sumaentre1y100_,
Sum(IIf([metros]>=101 And [metros]<=500,[elec_consumo2006],0)) AS sumaentre101y500_,
Sum(IIf([metros]>=501 And [metros]<=1000,[elec_consumo2006],0)) AS sumaentre501y1000_,
Sum(IIf([metros]>=1001 And [metros]<=5000,[elec_consumo2006],0)) AS sumaentre1001y5000_,
Sum(IIf([metros]>=5000,[elec_consumo2006],0)) AS sumasuperiora5000_
FROM basegeneral;
"

Gracias por tu ayuda una vez más.
Un cordial saludo.
  #13 (permalink)  
Antiguo 10/02/2009, 10:16
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: Consulta de contar y sumar por tramos.

No se si te he entendido:

SELECT
Sum(IIf([metros]=0,1,0)) AS iguala0,
Sum(IIf([metros]>=0 And [metros]<=100000000000,1,0)) AS todos,
Sum(IIf([metros]>=1 And [metros]<=100,1,0)) AS entre1y100,
Sum(IIf([metros]>=101 And [metros]<=500,1,0)) AS entre101y500,
Sum(IIf([metros]>=501 And [metros]<=1000,1,0)) AS entre501y1000,
Sum(IIf([metros]>=1001 And [metros]<=5000,1,0)) AS entre1001y5000,
Sum(IIf([metros]>=5000,1,0)) AS superiora5000,


Sum(IIf([metros]=0 ,[elec_consumo2006],0)) AS sumaIgualACero_,
Sum(IIf([metros]>=1 And [metros]<=100,[elec_consumo2006],0)) AS sumaentre1y100_,
Sum(IIf([metros]>=101 And [metros]<=500,[elec_consumo2006],0)) AS sumaentre101y500_,
Sum(IIf([metros]>=501 And [metros]<=1000,[elec_consumo2006],0)) AS sumaentre501y1000_,
Sum(IIf([metros]>=1001 And [metros]<=5000,[elec_consumo2006],0)) AS sumaentre1001y5000_,
Sum(IIf([metros]>=5000,[elec_consumo2006],0)) AS sumasuperiora5000_
FROM basegeneral;

Un saludo
  #14 (permalink)  
Antiguo 10/02/2009, 10:54
 
Fecha de Ingreso: marzo-2007
Mensajes: 16
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Consulta de contar y sumar por tramos.

Taribo007, por supuesto que me has entendido.
Muchísimas gracias de nuevo. Es lo que necesito.
No sé si volveré a molestarte más, porque me siento un poco 'abuson'.
Muchísimas gracias de nuevo.
Un cordial saludo.
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 11:16.