Query SQL
Publicado por Ariel (8 intervenciones) el 05/07/2013 21:21:11
Hola! como estan? Estoy practicando un poco de SQL para rendir un examen y ante uno de los ejercicios me surgió una duda.
Teniendo este esquema
Estudiante(Id, e_nombre, e_carrera, año, edad) necesito consultar para cada valor de Edad, el valor de año que aparece mas frecuentemente.
Por ejemplo:
ID E_NOMBRE E_CARRERA ANIO EDAD
1 Juan Informatica 2 20
2 Arturo Informatica 2 21
3 Marcos Informatica 3 22
4 Penelope Informatica 2 20
5 Matias Informatica 2 19
6 Humberto Informatica 3 21
7 Ruperto Informatica 3 22
8 Enrique Electronica 1 20
9 Gabriel Informatica 3 20
10 Marianela Informatica 2 20
La sentencia en SQL que hice es la siguiente:
SELECT e.edad, e.anio
FROM Estudiante e
GROUP BY e.edad, e.anio
HAVING count(e.anio) >= ALL(SELECT count(distinct e1.anio)
FROM Estudiante e1
WHERE e1.edad = e.edad)
y el resultado:
EDAD ANIO
19 2
20 2
22 3
El problema es para la edad de 21 años, que se encuentra tanto en 2do año como en 3ro y que aparece una sola vez para ambas edades, no me aparece en el resultado, estaria esperando algo por el estilo:
EDAD ANIO
19 2
20 2
21 2
21 3
22 3
Alguna sugerencia? Muchas gracias.
Teniendo este esquema
Estudiante(Id, e_nombre, e_carrera, año, edad) necesito consultar para cada valor de Edad, el valor de año que aparece mas frecuentemente.
Por ejemplo:
ID E_NOMBRE E_CARRERA ANIO EDAD
1 Juan Informatica 2 20
2 Arturo Informatica 2 21
3 Marcos Informatica 3 22
4 Penelope Informatica 2 20
5 Matias Informatica 2 19
6 Humberto Informatica 3 21
7 Ruperto Informatica 3 22
8 Enrique Electronica 1 20
9 Gabriel Informatica 3 20
10 Marianela Informatica 2 20
La sentencia en SQL que hice es la siguiente:
SELECT e.edad, e.anio
FROM Estudiante e
GROUP BY e.edad, e.anio
HAVING count(e.anio) >= ALL(SELECT count(distinct e1.anio)
FROM Estudiante e1
WHERE e1.edad = e.edad)
y el resultado:
EDAD ANIO
19 2
20 2
22 3
El problema es para la edad de 21 años, que se encuentra tanto en 2do año como en 3ro y que aparece una sola vez para ambas edades, no me aparece en el resultado, estaria esperando algo por el estilo:
EDAD ANIO
19 2
20 2
21 2
21 3
22 3
Alguna sugerencia? Muchas gracias.
Valora esta pregunta


0