Otra consulta sql

26/04/2006 - 21:21 por Hugo Gsell | Informe spam
tengo una tabla donde cada registro es una persona y tengo un campo edad
tipo integer deseo crear una consulta donde cuente la cantidad de
registros que esten entre un grupo de rangos...
Ejemplo
nroreg edad
1 10
2 12
3 18
4 20
5 50

donde mis rango son
rango1 de 1<edad<19
rango2 de 19<edad<50
rango3 de edad>P
entonces la consulta debe arrojarme un registro por cada rango y quedaría de
acuerdo al ejemplo
rango 1 3
rango 2 1
rango 3 1
Se entiende?

Preguntas similare

Leer las respuestas

#1 Victor
26/04/2006 - 21:49 | Informe spam
Create una tabla de rangos con id, inicio, fin y luego haces un inner
join, te paso tu ejemplo resuelto


SELECT RANGOS.IdRango,COUNT(*) 'Personas'
FROM (
SELECT 1 'IdPersona', 10 'Edad'
UNION
SELECT 2, 12
UNION
SELECT 3, 18
UNION
SELECT 4 ,20
UNION
SELECT 5 'Ref', 50
) PERSONAS
INNER JOIN
(
SELECT 1 'IdRango',1 'Inicio',19 'Fin'
UNION
SELECT 2 ,20 ,49 'Fin'
UNION
SELECT 3 ,50 ,125 'Fin'
) RANGOS ON PERSONAS.EDAD BETWEEN RANGOS.INICIO AND RANGOS.FIN
GROUP BY RANGOS.IdRango


Un saludo.


"Hugo Gsell" escribió en el mensaje
news:
tengo una tabla donde cada registro es una persona y tengo un campo


edad
tipo integer deseo crear una consulta donde cuente la cantidad de
registros que esten entre un grupo de rangos...
Ejemplo
nroreg edad
1 10
2 12
3 18
4 20
5 50

donde mis rango son
rango1 de 1<edad<19
rango2 de 19<edad<50
rango3 de edad>P
entonces la consulta debe arrojarme un registro por cada rango y quedaría


de
acuerdo al ejemplo
rango 1 3
rango 2 1
rango 3 1
Se entiende?


Respuesta Responder a este mensaje
#2 Hugo Gsell
27/04/2006 - 14:21 | Informe spam
Es una consulta en access
me está dando error en la cláusula FROM en realidad donde esta el select 1,
etc


"Victor" escribió en el mensaje
news:
Create una tabla de rangos con id, inicio, fin y luego haces un inner
join, te paso tu ejemplo resuelto


SELECT RANGOS.IdRango,COUNT(*) 'Personas'
FROM (
SELECT 1 'IdPersona', 10 'Edad'
UNION
SELECT 2, 12
UNION
SELECT 3, 18
UNION
SELECT 4 ,20
UNION
SELECT 5 'Ref', 50
) PERSONAS
INNER JOIN
(
SELECT 1 'IdRango',1 'Inicio',19 'Fin'
UNION
SELECT 2 ,20 ,49 'Fin'
UNION
SELECT 3 ,50 ,125 'Fin'
) RANGOS ON PERSONAS.EDAD BETWEEN RANGOS.INICIO AND RANGOS.FIN
GROUP BY RANGOS.IdRango


Un saludo.


"Hugo Gsell" escribió en el mensaje
news:
tengo una tabla donde cada registro es una persona y tengo un campo


edad
tipo integer deseo crear una consulta donde cuente la cantidad de
registros que esten entre un grupo de rangos...
Ejemplo
nroreg edad
1 10
2 12
3 18
4 20
5 50

donde mis rango son
rango1 de 1<edad<19
rango2 de 19<edad<50
rango3 de edad>P
entonces la consulta debe arrojarme un registro por cada rango y quedaría


de
acuerdo al ejemplo
rango 1 3
rango 2 1
rango 3 1
Se entiende?






Respuesta Responder a este mensaje
#3 Victor
27/04/2006 - 23:22 | Informe spam
Lo que te quería transmitir era la idea, más que la consulta en sí, para que
te funcione en ACCESS tienes que crear una tabla PERSONAS (IdPersona,Edad) y
una tabla RANGOS (IdRango,Inicio,Fin), luego las rellenas con los valores y
la consulta es la siguiente:


SELECT RANGOS.IdRango, COUNT(PERSONAS.IdPersona) AS Personas
FROM Personas
INNER JOIN RANGOS ON (PERSONAS.Edad>=RANGOS.Inicio) AND
(PERSONAS.Edad<=RANGOS.Fin)
GROUP BY RANGOS.IdRango;

En realidad todo se reduce a un simple INNER JOIN, si lo dejas como una
consulta de ACCESS el diseñador seguramente no lo interpretará pero funciona
igual.


Un abrazo.


"Hugo Gsell" escribió en el mensaje
news:
Es una consulta en access
me está dando error en la cláusula FROM en realidad donde esta el select


1,
etc


"Victor" escribió en el mensaje
news:
> Create una tabla de rangos con id, inicio, fin y luego haces un inner
> join, te paso tu ejemplo resuelto
>
>
> SELECT RANGOS.IdRango,COUNT(*) 'Personas'
> FROM (
> SELECT 1 'IdPersona', 10 'Edad'
> UNION
> SELECT 2, 12
> UNION
> SELECT 3, 18
> UNION
> SELECT 4 ,20
> UNION
> SELECT 5 'Ref', 50
> ) PERSONAS
> INNER JOIN
> (
> SELECT 1 'IdRango',1 'Inicio',19 'Fin'
> UNION
> SELECT 2 ,20 ,49 'Fin'
> UNION
> SELECT 3 ,50 ,125 'Fin'
> ) RANGOS ON PERSONAS.EDAD BETWEEN RANGOS.INICIO AND RANGOS.FIN
> GROUP BY RANGOS.IdRango
>
>
> Un saludo.
>
>
> "Hugo Gsell" escribió en el mensaje
> news:
>> tengo una tabla donde cada registro es una persona y tengo un campo
> edad
>> tipo integer deseo crear una consulta donde cuente la cantidad de
>> registros que esten entre un grupo de rangos...
>> Ejemplo
>> nroreg edad
>> 1 10
>> 2 12
>> 3 18
>> 4 20
>> 5 50
>>
>> donde mis rango son
>> rango1 de 1<edad<19
>> rango2 de 19<edad<50
>> rango3 de edad>P
>> entonces la consulta debe arrojarme un registro por cada rango y


quedaría
> de
>> acuerdo al ejemplo
>> rango 1 3
>> rango 2 1
>> rango 3 1
>> Se entiende?
>>
>>
>
>


Respuesta Responder a este mensaje
#4 Hugo Gsell
28/04/2006 - 04:12 | Informe spam
ya pude hacerla... gracias.

"Victor" escribió en el mensaje
news:%
Lo que te quería transmitir era la idea, más que la consulta en sí, para
que
te funcione en ACCESS tienes que crear una tabla PERSONAS (IdPersona,Edad)
y
una tabla RANGOS (IdRango,Inicio,Fin), luego las rellenas con los valores
y
la consulta es la siguiente:


SELECT RANGOS.IdRango, COUNT(PERSONAS.IdPersona) AS Personas
FROM Personas
INNER JOIN RANGOS ON (PERSONAS.Edad>=RANGOS.Inicio) AND
(PERSONAS.Edad<=RANGOS.Fin)
GROUP BY RANGOS.IdRango;

En realidad todo se reduce a un simple INNER JOIN, si lo dejas como una
consulta de ACCESS el diseñador seguramente no lo interpretará pero
funciona
igual.


Un abrazo.


"Hugo Gsell" escribió en el mensaje
news:
Es una consulta en access
me está dando error en la cláusula FROM en realidad donde esta el select


1,
etc


"Victor" escribió en el mensaje
news:
> Create una tabla de rangos con id, inicio, fin y luego haces un inner
> join, te paso tu ejemplo resuelto
>
>
> SELECT RANGOS.IdRango,COUNT(*) 'Personas'
> FROM (
> SELECT 1 'IdPersona', 10 'Edad'
> UNION
> SELECT 2, 12
> UNION
> SELECT 3, 18
> UNION
> SELECT 4 ,20
> UNION
> SELECT 5 'Ref', 50
> ) PERSONAS
> INNER JOIN
> (
> SELECT 1 'IdRango',1 'Inicio',19 'Fin'
> UNION
> SELECT 2 ,20 ,49 'Fin'
> UNION
> SELECT 3 ,50 ,125 'Fin'
> ) RANGOS ON PERSONAS.EDAD BETWEEN RANGOS.INICIO AND RANGOS.FIN
> GROUP BY RANGOS.IdRango
>
>
> Un saludo.
>
>
> "Hugo Gsell" escribió en el mensaje
> news:
>> tengo una tabla donde cada registro es una persona y tengo un
>> campo
> edad
>> tipo integer deseo crear una consulta donde cuente la cantidad de
>> registros que esten entre un grupo de rangos...
>> Ejemplo
>> nroreg edad
>> 1 10
>> 2 12
>> 3 18
>> 4 20
>> 5 50
>>
>> donde mis rango son
>> rango1 de 1<edad<19
>> rango2 de 19<edad<50
>> rango3 de edad>P
>> entonces la consulta debe arrojarme un registro por cada rango y


quedaría
> de
>> acuerdo al ejemplo
>> rango 1 3
>> rango 2 1
>> rango 3 1
>> Se entiende?
>>
>>
>
>






email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida