MySQL - Consulta mysql 3>

   
Vista:

Consulta mysql 3>

Publicado por Mendozak47 (9 intervenciones) el 27/04/2017 11:28:52
Necesito los codigos de curso donde hay matriculados mas de 3 alumnos, y estoy un poco pillado :S



1
select cod_curso from notas where 3>(select cod_alum from notas)

gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Consulta mysql 3>

Publicado por xve (1015 intervenciones) el 27/04/2017 14:16:18
Hola, creo que seria algo así:

1
SELECT count(*) as Total,* FROM notas GROUP BY cod_curso WHEREIS Total>3

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta mysql 3>

Publicado por leonardo_josue (171 intervenciones) el 27/04/2017 15:49:24
Hola Mendozak47:

Pones muy poca información en tu post, no nos dices cuál es la estructura de tus tablas ni nos pones datos de ejemplo por lo tanto no es posible darte una respuesta puntual.

La respuesta xve se acerca mucho a lo que debes hacer, sin embargo aunque no conozco la cláusula WHEREIS... O_o en todo caso, si tratas de usarla en el WHERE hay un problema, NO ES POSIBLE DEBIDO A QUE ESTE ES UN CAMPO CALCULADO, por lo tanto existe sólo después de la ejecución de la consulta. Para tal efecto, lo que debes hacer es utilizar la cláusula HAVING, pero veamos un ejemplo:

Supongamos que tienes estos datos:

1
2
3
4
5
6
7
8
9
10
11
mysql> SELECT * FROM notas;
+-----------+------------+------+
| cod_curso | cod_alumno | nota |
+-----------+------------+------+
| mat       | hugo       |   10 |
| mat       | paco       |    9 |
| mat       | luis       |    8 |
| esp       | hugo       |   10 |
| esp       | paco       |    7 |
| otra      | luis       |    5 |
+-----------+------------+----
--+
6 rows in set (0.00 sec)

Para obtener el número de alumnos que cursa cada materia, lo hacemos con un COUNT y un GROUP BY, como bien lo dice xve:

1
2
3
4
5
6
7
8
9
10
11
mysql> SELECT cod_curso, COUNT(*)
    -> FROM notas
    -> GROUP BY cod_curso;
+-----------+----------+
| cod_curso | COUNT(*) |
+-----------+----------+
| esp       |        2 |
| mat       |        3 |
| otra      |        1 |
+-----------+----------+
3 rows in set (0.00 sec)

Ahora, para filtrar sólo aquellos que tienen más de tres alumnos, agregamos una cláusula HAVING:

1
2
3
4
5
6
7
8
9
10
mysql> SELECT cod_curso, COUNT(*)
    -> FROM notas
    -> GROUP BY cod_curso
    -> HAVING COUNT(*) >= 3;
+-----------+----------+
| cod_curso | COUNT(*) |
+-----------+----------+
| mat       |        3 |
+-----------+----------+
1 row in set (0.05 sec)

Haz la prueba y nos comentas.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar