Ayuda con COUNT

24/06/2005 - 01:40 por Matías L | Informe spam
Hola a todos, tengo las siguiente tabla

IdAlumno IdEstado Fecha
1 2 10/02/2005
1 3 12/03/2005
1 2 04/03/2005
3 2 09/12/2005
3 1 13/03/2005
3 2 17/04/2005
4 2 18/03/2005

Tengo que saber la cantidad de alumnos(IdAlumno) que estan con IdEstado = 2
pero con fecha mas grande,
ya que un alumno puede tener mas de una vez el mismo estado.

Estoy con algo asi, pero no logro darle:

SELECT count(*) as Cant
from AlumnosEstados
Where IdEstado = 2 and Fecha = (SELECT MAX([Fecha]) FROM
AlumnosEstados D)

Me tendría que devolver Cant = 3

Saludos y gracias

Preguntas similare

Leer las respuestas

#6 Don Roque
24/06/2005 - 15:05 | Informe spam
Con el permiso de Isaias y de Maxi


select count(*) from (
select idalumno
from alumnos a1
where idestado = 2 and fecha (
select max(fecha) as maximafecha
from alumnos a2
where a2.idalumno = a1.idalumno
)
group by idalumno
) a


Saludos

Matías wrote:
Gracias, lo voy a probar...


"Isaias" escribió en el mensaje
news:
>
> Con el permiso de Maxi, creo que.
>
> SELECT IdAlumno, IdEstado, MAX(Fecha)
> FROM TABLA
> GROUP BY IdAlumno, IdEstado
Respuesta Responder a este mensaje
#7 Don Roque
24/06/2005 - 15:06 | Informe spam
Con el permiso de Isaias y de Maxi


select count(*) from (
select idalumno
from alumnos a1
where idestado = 2 and fecha (
select max(fecha) as maximafecha
from alumnos a2
where a2.idalumno = a1.idalumno
)
group by idalumno
) a


Saludos

Matías wrote:
Gracias, lo voy a probar...


"Isaias" escribió en el mensaje
news:
>
> Con el permiso de Maxi, creo que.
>
> SELECT IdAlumno, IdEstado, MAX(Fecha)
> FROM TABLA
> GROUP BY IdAlumno, IdEstado
Respuesta Responder a este mensaje
#8 Alejandro Mesa
24/06/2005 - 15:18 | Informe spam
Don Roque,

select count(*) from (
select idalumno
from alumnos a1
where idestado = 2 and fecha > (
select max(fecha) as maximafecha
from alumnos a2
where a2.idalumno = a1.idalumno
)
group by idalumno
) a




Debes seleccionar la fecha maxima del mismo alumno pero de los [idestado] =
2, de lo contrario corres el riesgo de selccionar la maxima fecha del mismo
[idalumno] pero de otro [idestado].

...
(
select max(fecha) as maximafecha
from alumnos a2
where a2.idalumno = a1.idalumno and a2.idestado = 2
)
...


AMB

"Don Roque" wrote:

Con el permiso de Isaias y de Maxi


select count(*) from (
select idalumno
from alumnos a1
where idestado = 2 and fecha > (
select max(fecha) as maximafecha
from alumnos a2
where a2.idalumno = a1.idalumno
)
group by idalumno
) a


Saludos

Matías wrote:
> Gracias, lo voy a probar...
>
>
> "Isaias" escribió en el mensaje
> news:
> >
> > Con el permiso de Maxi, creo que.
> >
> > SELECT IdAlumno, IdEstado, MAX(Fecha)
> > FROM TABLA
> > GROUP BY IdAlumno, IdEstado


Respuesta Responder a este mensaje
#9 Maxi
24/06/2005 - 15:47 | Informe spam
Hola, matias, ahora si te entendi :-)

Podrias hacer algo asi como:

Select idestado from tabla inner join (select max(fecha) as fecha from
tabla) t2 on
tabla.fecha = t2.fecha

pd: estoy mas de 12hs frente a la pc por dia :-), digamos que en el laburo
son 10 y en mi casa 4 o 5, naci asi jeje, desde los 12 años estoy tanto
tiempo frente a una maquina, ya el teclado paso a ser una extension de mis
extremidades :-p




Salu2
Maxi


"Matías L" escribió en el mensaje
news:
Gracias Maxi por responder, con fecha mas grande me refiero a la fecha
mayor, ej:

1 2 04/03/2005
3 2 09/12/2005
4 2 18/03/2005

Entonces yo se q hay 3 alumnos cuyo ultimo estado fue el estado 2, o sea
me
hace falta saber el ultimo IdEstado que tiene la tabla segun la fecha
mayor.
Espero se entienda, soy malo para explicar.

Te comento que por ahora lo solucione asi:
SELECT COUNT(*) as Cant
FROM AlumnosEstados A
WHERE A.[Fecha] = (SELECT MAX([Fecha]) FROM
AlumnosEstados D WHERE A.IdAlumno = D.IdAlumno) AND A.IdEstado = 2

Aparentemente funciona pero tengo q probarlo bien, ya que me tiene q
servir
para los distintos IdEstados q tiene la tabla, si tenes sugerencias
bienvenidas.

Muchas Gracias, Saludos desde CBA(Arg)

PD: Maxi, vos te pasas unas 12 hs por dia en la pc? Porq veo respuestas
tuyas desde la mañana a la noche, sos un maestro!!!!!!!!!!!!

Yo estoy unas 11 a 12 hs por dia en la pc entre el trabajo y el estudio...
jejeje
encima en el trabajo peleo con FOX9 y en mi casa con VB y SQL


"Maxi" escribió en el mensaje
news:e$aKq$
Hola, martin, no comprendo como es con fecha mas grande, podrias
indicarme
de estos registros cuales deberia devolver?


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Matías L" escribió en el mensaje
news:%
> Hola a todos, tengo las siguiente tabla
>
> IdAlumno IdEstado Fecha
> 1 2 10/02/2005
> 1 3 12/03/2005
> 1 2 04/03/2005
> 3 2 09/12/2005
> 3 1 13/03/2005
> 3 2 17/04/2005
> 4 2 18/03/2005
>
> Tengo que saber la cantidad de alumnos(IdAlumno) que estan con IdEstado


>> > 2
> pero con fecha mas grande,
> ya que un alumno puede tener mas de una vez el mismo estado.
>
> Estoy con algo asi, pero no logro darle:
>
> SELECT count(*) as Cant
> from AlumnosEstados
> Where IdEstado = 2 and Fecha = (SELECT MAX([Fecha]) FROM
> AlumnosEstados D)
>
> Me tendría que devolver Cant = 3
>
> Saludos y gracias
>
>






Respuesta Responder a este mensaje
#10 Matías
24/06/2005 - 16:12 | Informe spam
Gracias a todos por su tiempo, esta noche los pruebo cuando llego a mi
casa(ahora estoy en el laburo). ups!!!!! me olvidaba, hoy es viernes, lo
pasaré para el lunes... :D
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida