SQL - ayuda con consulta

 
Vista:
sin imagen de perfil

ayuda con consulta

Publicado por moncho (3 intervenciones) el 16/04/2015 16:05:42
Buenas tardes quería pedir ayuda para una consulta que no se muy bien como realizar, dada la tabla:

EXAMENES
-----------------------------------------
ALUMNO | NOTA
--------------------------------
ALU1 | 7
ALU1 | 8
ALU2 | 7
ALU2 | 3
ALU3 | 5
ALU3 | 5
ALU3 | 9

1. Obtener los alumnos que han aprobado más de 2 exámenes.
2. Seleccionar los alumnos que han realizado el mayor número de exámenes.
3. Obtener los alumnos que se han examinado al menos 3 veces
4. Sacar los alumnos cuya suma de notas sea mayor.

Por ejemplo en el apartado 2 queria hacer un :

SELECT ALUMNO, COUNT(*) FROM EXAMENES GROUP BY ALUMNO HAVING MAX(COUNT(*));

Pero me da error, no se como afrontar este tipo de consultas y estoy bastante bloqueado si me pudiera alguien echar una mano se lo agradeceria. Un saludo!!!
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
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

ayuda con consulta

Publicado por leonardo_josue (1173 intervenciones) el 16/04/2015 16:49:27
Hola moncho.

Vayamos por partes.

En primer lugar hay que aclarar a qué te refieres con "aprobar un examen", puedo suponer que se trata de obtener una nota mayor o igual a 6, pero eso sólo tú lo sabes.

Te recuerdo que en el foro participamos personas de muchos países y que la manera de calificar un examen puede ser distinta en cada una de ellas.

En segundo lugar, ¿qué motor de BD's estás utilizando? este dato es muy importante, pues aunque la mayoría de los DBMS están basados en SQL, hay diferencias sintácticas importantes.

Ahora si, pasando a tu problema, en el caso de la segunda consulta, hay varias formas para obtener el resultado que esperas... la consulta que planeas no está del todo equivocada, sin embargo el uso la cláusula HAVING está equivocada.

Por un lado, NO PUEDES TRATAR DE HACER UN CONTEO Y LA FUNCIÓN MAX al mismo tiempo, ya que una depende de la otra... entonces lo que tienes que hacer es hacerlo por partes. Hay varias formas para obtener el resultado que esperas, puedes hacerlo por partes, es decir, primero obtener cual es el número máximo de examenes realizados por un alumno y después utilizar este dato para filtrar, es decir, algo como esto:

Primero obtienes el numero de examenes por alumno:

1
2
3
4
5
6
7
8
9
10
mysql> SELECT COUNT(*) total
    -> FROM EXAMENES GROUP BY ALUMNO;
+-------+
| total |
+-------+
|     2 |
|     2 |
|     3 |
+-------+
3 rows in set (0.00 sec)

A partir de esta consulta obtienes el número máximo de exámenes que realizó un alumno, (dependiendo del motor lo puedes hacer con una subconsulta u ordenando los registros y mostrando sólo el primer registro:

1
2
3
4
5
6
7
8
9
mysql> SELECT MAX(total)
    -> FROM ( SELECT COUNT(*) total
    ->        FROM EXAMENES GROUP BY ALUMNO) T;
+------------+
| MAX(total) |
+------------+
|          3 |
+------------+
1 row in set (0.00 sec)


o

1
2
3
4
5
6
7
8
9
10
mysql> SELECT COUNT(*) total
    -> FROM EXAMENES
    -> GROUP BY ALUMNO
    -> ORDER BY total DESC LIMIT 1;
+-------+
| total |
+-------+
|     3 |
+-------+
1 row in set (0.00 sec)

y ahora si, con este dato puedes hacer lo que planeaste desde un principio, es decir filtrar la cláusula HAVING:

1
2
3
4
5
6
7
8
9
10
11
12
mysql> SELECT ALUMNO, COUNT(*)
    -> FROM EXAMENES
    -> GROUP BY ALUMNO
    -> HAVING COUNT(*) = ( SELECT MAX(total)
    ->                     FROM ( SELECT COUNT(*) total
    ->                            FROM EXAMENES GROUP BY ALUMNO) T);
+--------+----------+
| ALUMNO | COUNT(*) |
+--------+----------+
| ALU3   |        3 |
+--------+----------+
1 row in set (0.00 sec)

Esta no es la forma más eficiente de obtener lo que buscas, pero es la manera "estándar" de hacerlo haz la prueba con el resto de las consultas y si tienes alguna duda lo comentas en el foro, y no olvides contestar las preguntas que hice al inicio.

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
sin imagen de perfil

ayuda con consulta

Publicado por moncho (3 intervenciones) el 16/04/2015 18:02:58
Genial Leo muchisimas gracias!!!
En primer lugar contestarte a tus preguntas, aprobar considero de un 5 para arriba y el gestor que uso es oracle siento no haberlo especificado antes.

He resuelto el apartado 3 de la siguiente manera gracias a tu ayuda, no se si sera correcto pero el resultado parece funcionar:

SELECT ALUMNO FROM (SELECT ALUMNO, COUNT(*) total FROM EXAMENES GROUP BY ALUMNO) WHERE total >2;



En el apartado 4 he hecho lo siguiente:

SELECT MAX(suma) FROM (SELECT ALUMNO, SUM(NOTA) suma FROM EXAMENES GROUP BY ALUMNO);

De esta manera me devuelve el maximo de la suma de las notas por alumno pero no se como mostrar tambien el alumno al lado del maximo ya que si intento lo siguiente me da error:

SELECT ALUMNO, MAX(suma) FROM (SELECT ALUMNO, SUM(NOTA) suma FROM EXAMENES GROUP BY ALUMNO);



En cuanto al apartado 1 no tengo mucha idea de como afrontarlo

UN MILLON DE GRACIAS!!!!
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
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

ayuda con consulta

Publicado por leonardo_josue (1173 intervenciones) el 16/04/2015 20:09:06
Hola de nuevo moncho.

Alguna vez uno de mis profesores me dijo "Hay muchas maneras de matar una mosca, pero utilizar una pistola puede no ser la mejor".

Lo mismo pasa con esto de las consultas SQL... afortunadamente (o desafortunadamente) tienes muchas formas para llegar al mismo resultado, por ejemplo, nos dices esto:

1
2
3
He resuelto el apartado 3 de la siguiente manera gracias a tu ayuda, no se si sera correcto pero el resultado parece funcionar:
 
SELECT ALUMNO FROM (SELECT ALUMNO, COUNT(*) total FROM EXAMENES GROUP BY ALUMNO) WHERE total >2;

En realidad NO HAY NECESIDAD DE METER UNA SUBCONSULTA, aquí si aplica utilizar la cláusula HAVING, ya que el dato (mayor a dos) no tienes que calcularlo, observa lo siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
mysql> SELECT ALUMNO
    -> FROM ( SELECT ALUMNO, COUNT(*) total
    ->        FROM EXAMENES
    ->        GROUP BY ALUMNO) T
    -> WHERE total > 2;
+--------+
| ALUMNO |
+--------+
| ALU3   |
+--------+
1 row in set (0.00 sec)
 
mysql> SELECT ALUMNO
    -> FROM EXAMENES
    -> GROUP BY ALUMNO
    -> HAVING COUNT(*) > 2;
+--------+
| ALUMNO |
+--------+
| ALU3   |
+--------+
1 row in set (0.00 sec)


La primer consulta es tal como la planteas, la segunda es utilizando HAVING, ambas consultas regresan el mismo resultado:

Ahora bien, nos comentas esto:

1
2
3
4
5
En el apartado 4 he hecho lo siguiente:
 
SELECT MAX(suma) FROM (SELECT ALUMNO, SUM(NOTA) suma FROM EXAMENES GROUP BY ALUMNO);
 
De esta manera me devuelve el maximo de la suma de las notas por alumno pero no se como mostrar tambien el alumno al lado del maximo

Aquí también tienes varias opciones. Por ejemplo, dices que trabajas con ORACLE, por lo tanto puedes hacer uso de las funciones RANK y ROW_NUMBER, dale un vistazo a la documentación oficial:

http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions123.htm

http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions137.htm

Con esta función podrías calcular una columna extra a partir de la suma, es decir tendrías algo como esto:

1
2
3
4
5
6
7
8
9
10
11
12
mysql> SELECT ALUMNO, SUM(NOTA) SUMA, 1 POSICION
    -> FROM EXAMENES
    -> GROUP BY ALUMNO
    -> ORDER BY suma DESC;
+--------+------+----------+
| ALUMNO | SUMA | POSICION |
+--------+------+----------+
| ALU3   |   19 |        1 |
| ALU1   |   15 |        2 |
| ALU2   |   10 |        3 |
+--------+------+----------+
3 rows in set (0.00 sec)

de esta manera podrías simplemente filtrar por la posición 1 y listo, en caso contrario, si quisieras obtenerlo con SQL "puro" o "estándar" entonces tendrías que hacer otra vez uso de subconsultas, una vez que obtienes la suma máxima (Tal como lo haces):

1
2
3
4
5
6
7
8
9
10
mysql> SELECT MAX(suma) max_suma
    -> FROM ( SELECT ALUMNO, SUM(NOTA) suma
    ->        FROM EXAMENES GROUP BY ALUMNO
    ->      ) T;
+----------+
| max_suma |
+----------+
|       19 |
+----------+
1 row in set (0.00 sec)

Y utilizar esta subconsulta para filtrar la consulta "original" y mostrar sólo aquellos que cumplan con la suma máxima, es decir, algo como esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
mysql> SELECT T1.ALUMNO FROM
    -> ( SELECT ALUMNO, SUM(NOTA) suma
    ->   FROM EXAMENES
    ->   GROUP BY ALUMNO
    -> ) T1
    -> INNER JOIN
    -> ( SELECT MAX(suma) max_suma
    ->   FROM ( SELECT ALUMNO, SUM(NOTA) suma
    ->          FROM EXAMENES GROUP BY ALUMNO
    ->        ) T2
    -> ) T3 ON T1.SUMA = T3.MAX_SUMA;
+--------+
| ALUMNO |
+--------+
| ALU3   |
+--------+
1 row in set (0.00 sec)

Vuelvo a insistir en que esta NO ES LA MEJOR MANERA DE HACER LAS COSAS, y por lo tanto no te recomiendo que lo hagas así.

Sigue intentando y cualquier duda, seguiremos tratando de ayudarte.

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
1
Comentar
Imágen de perfil de xve
Val: 135
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

ayuda con consulta

Publicado por xve (284 intervenciones) el 17/04/2015 08:09:51
Hola Juan Carlos, los puedes compartir en el foro?
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
Imágen de perfil de Juan Carlos

ayuda con consulta

Publicado por Juan Carlos (5 intervenciones) el 17/04/2015 15:13:17
Hola, para quien lo desee el costo de las 4 consultas SQL, es 7 dolares.
Pago con Paypal
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

ayuda con consulta

Publicado por leonardo_josue (1173 intervenciones) el 17/04/2015 16:29:07
Yo tengo las cuatro consultas en SQL y me importa un comino que alguien me pague por ellas...

Para quien lo deseé lo único que pido es que participen en el foro, que muestren algo de interés en APRENDER, no que estén interesados en ganar unos cuantos dólares.

Ojo con eso.

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
Imágen de perfil de Juan Carlos

ayuda con consulta

Publicado por Juan Carlos (5 intervenciones) el 17/04/2015 16:32:06
Habran muchos que participan por que no tienen nada que hacer y sus padres los mantienen.
En la vida todo cuesta,o es que ¿el que vende el pan, o el que vende los alimentos
algun dia te regala algo?.
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
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

ayuda con consulta

Publicado por Isaias (1921 intervenciones) el 17/04/2015 18:22:17
Juan Carlos, ya que todo tiene un precio, ¿Cuánto porque te vayas a vender..........pero a otro lado?
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
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

ayuda con consulta

Publicado por leonardo_josue (1173 intervenciones) el 17/04/2015 19:09:18
Hola Juan Carlos...

1
Habran muchos que participan por que no tienen nada que hacer y sus padres los mantienen.

Puede que tengas razón, no dudo que en el foro participen personas que no tienen nada que hacer, como tú bien lo comentas... y qué afortunados si además de eso los mantienen sus padres, porque implica que aun los tienen con ellos, porque otros ni madre o padre tienen.

Otros sin embargo tenemos que trabajar para llevarle el pan a nuestras familias (pan que como bien comentas tenemos que pagar porque no lo regalan) y que participamos en este foro sólo en nuestros ratos libres y lo hacemos de forma desinteresada. Hace mucho tiempo acudí a estos foros en busca de ayuda y afortunadamente, la encontré. Ahora que puedo devolver algo, lo hago con todo gusto.

No te juzgo si quieres "vender" tu conocimiento, que debe ser mucho, simplemente te comento este no es el medio.

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
Imágen de perfil de Juan Carlos

ayuda con consulta

Publicado por Juan Carlos (5 intervenciones) el 17/04/2015 20:12:59
Solo tres cosas:
Aqui hay libertad, se puede regalar o vender conocimiento, es libre
No hay que juzgar ni al que vende ni al que regala
Yo mismo algunas veces regalo y otra lo ofrezco a un precio que es libre (nada se obliga)
Hay algunos que buscan una ayuda algo compleja que aveces nadie quiere tomarse la molestia de ayudar.
Es alli donde esa persona puede pagar un precio y podra encontrar lo que busca.
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
Imágen de perfil de xve
Val: 135
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

ayuda con consulta

Publicado por xve (284 intervenciones) el 17/04/2015 20:55:13
Siempre hemos tenido que buscar cosas en internet, si alguien no lo compartiera gratuitamente, no seria posible que nosotros buscásemos por internet y encontráramos respuestas.

Si todos cobraran, no existiría sistemas operativos como Linux, y seguramente esta web tampoco!!!

Este es un foro de consulta donde la gente viene a solicitar ayuda gratuitamente.
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
Imágen de perfil de Juan Carlos

ayuda con consulta

Publicado por Juan Carlos (5 intervenciones) el 17/04/2015 22:43:16
Pues, porque cerrar las puertas a la persona que venga aquí a solicitar una ayuda compleja
que nadie se atreve a responder.
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
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

ayuda con consulta

Publicado por leonardo_josue (1173 intervenciones) el 17/04/2015 23:25:58
Hola de nuevo Juan Carlos:

sólo tres cosas:

1. Tu comentas esto:

1
Aqui hay libertad, se puede regalar o vender conocimiento, es libre

Estás muy equivocado, pues la finalidad del foro es justamente compartir conocimiento SIN INTERESES PARTICULARES, lo dice claramente el párrafo inicial:

1
2
3
El buen uso de este servicio es esencial para su disfrute por parte de todos, por lo que esperamos
que todos sepamos respetar las opiniones y comentarios de los demás, así como publicar mensajes
de interés general y no mensajes de interés personal. 

Es por eso que comenté que no hay nada malo en que quieras cobrar por tu conocimiento, lo que está mal es hacerlo en este foro en particular.

2. Tú nos comentas

1
No hay que juzgar ni al que vende ni al que regala

Sin embargo eres el primero en juzgar a los que participamos en el foro diciendo que muchos que participan por que no tienen nada que hacer y sus padres los mantienen, lo cual, por donde lo veas es un juicio de valor.

3. Finalmente rematas diciendo:

1
2
porque cerrar las puertas a la persona que venga aquí a solicitar una ayuda compleja
que nadie se atreve a responder.

Y yo te contesto entonces, ¿Por qué cerrar la puerta a tus respuestas a una persona que tal vez no tenga recursos para pagar los 7 dólares que estás solicitando?

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
sin imagen de perfil

ayuda con consulta

Publicado por moncho (3 intervenciones) el 21/04/2015 17:29:43
UN MILLÓN DE GRACIAS DE NUEVO LEO, tu ayuda y tus indicaciones con los enlaces me han servido de mucho y he conseguido resolver las consultas, es genial poder contar con la ayuda de gente que sabe más que uno mismo y que lo hace desinteresadamente, agradezco muchísimo sobre todo las explicaciones que das ya que soy estudiante y lo que necesito es aprender mas que saber los resultados. También agradezco a Juan Carlos el que se ofrezca a facilitarme las soluciones aunque sea pagando pero como he dicho lo que necesito es aprender el porque se hace de una manera u otra.

En cuanto al apartado 2 comentaste que se podía hacer de esta manera:

1
2
3
4
5
6
7
8
9
mysql> SELECT MAX(total)
    -> FROM ( SELECT COUNT(*) total
    ->         FROM EXAMENES GROUP BY ALUMNO) T;
+------------+
| MAX(total) |
+------------+
|          3 |
+------------+
1 row in set (0.00 sec)

De esta manera estaría perfecto pero me gustaría saber como puedo hacer para que en el resultado ademas de la columna con el máximo apareciese también el alumno que tiene ese máximo, he probado:

1
2
3
4
5
SELECT ALUMNO, MAX(total)
FROM (SELECT COUNT(*) total, ALUMNO
       FROM EXAMENES
       GROUP BY ALUMNO) T
GROUP BY ALUMNO ;

Pero me sale mal el resultado ya que me salen todos los resultados de la tabla, también segén tu ayuda he pensado en usar un:

ORDER BY total DESC LIMIT 1

Pero si hubiesen varios alumnos que tuviesen el mismo numero de exámenes máximo solo saldría 1

MUCHISIMAS GRACIAS!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ES UN PLACER HABER DESCUBIERTO ESTA PAGINA
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
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

ayuda con consulta

Publicado por leonardo_josue (1173 intervenciones) el 21/04/2015 19:29:13
Hola de nuevo Moncho:

Antes que nada, me da gusto que lo que pueda aportarte te sirva de algo, esas es precisamente la idea de todo esto. Veamos tu problema:

En cuanto al apartado 2, tal como te comenté, puedes hacerlo de varias formas, el detalle está en primer lugar en saber el número máximo de exámenes contestados, esto lo obtenemos con la consulta siguiente:

1
2
3
4
5
6
7
8
9
mysql> SELECT MAX(total)
    -> FROM ( SELECT COUNT(*) total
    -> FROM EXAMENES GROUP BY ALUMNO) T;
+------------+
| MAX(total) |
+------------+
|          3 |
+------------+
1 row in set (0.00 sec)

Aquí en realidad NO NOS INTERESA EL ALUMNO, nos interesa el número de exámenes que contesto. El problema radica ahí, pues al mezclar al alumno, se pierde el "control" sobre este valor en particular.

Ahora bien, este numero "3" es el que te sirve para filtrar los datos... por un lado tienes tu consulta original, donde calculas simplemente cuántos exámenes contestó cada alumno:

1
2
3
4
5
6
7
8
9
10
11
mysql> SELECT alumno, COUNT(alumno) total_examenes
    -> FROM examenes
    -> GROUP BY alumno;
+--------+----------------+
| alumno | total_examenes |
+--------+----------------+
| ALU1   |              2 |
| ALU2   |              2 |
| ALU3   |              3 |
+--------+----------------+
3 rows in set (0.00 sec)


Por lo tanto, lo único que tienes que hacer es FILTRAR esta consulta para mostrar aquellos registros donde el campo calculado TOTAL_EXAMENES sea igual al valor que calculaste en la primer consulta. No sé qué tipo de restricciones tienes para hacer estos ejercicios. Si tienes opción de hacerlo en partes, lo único que tienes que hacer es guardar el valor máximo en una variable y después utilizar esta variable en la segunda consulta, es decir, algo asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql> SET @max_examenes = ( SELECT MAX(total)
    ->                       FROM ( SELECT COUNT(*) total
    ->                              FROM EXAMENES GROUP BY ALUMNO) T);
Query OK, 0 rows affected (0.00 sec)
 
mysql> SELECT alumno, COUNT(alumno) total_examenes
    -> FROM examenes
    -> GROUP BY alumno
    -> HAVING COUNT(alumno) = @max_examenes;
+--------+----------------+
| alumno | total_examenes |
+--------+----------------+
| ALU3   |              3 |
+--------+----------------+
1 row in set (0.00 sec)

O en su defecto, puedes poner simplemente toda la consulta como una subconsulta, es decir, algo como esto:

1
2
3
4
5
6
7
8
9
10
11
12
mysql> SELECT alumno, COUNT(alumno) total_examenes
    -> FROM examenes
    -> GROUP BY alumno
    -> HAVING COUNT(alumno) = ( SELECT MAX(total)
    ->                          FROM ( SELECT COUNT(*) total
    ->                                 FROM EXAMENES GROUP BY ALUMNO) T);
+--------+----------------+
| alumno | total_examenes |
+--------+----------------+
| ALU3   |              3 |
+--------+----------------+
1 row in set (0.00 sec)

Esta es la manera más "estándar" que tienes para hacerlo, sin embargo también te comenté que ORACLE posee funciones especiales para análisis de datos, con las función analítica RANK, podrías simplemente hacer esto:

1
2
3
SELECT ALUMNO, COUNT(ALUMNO) TOTAL_EXAMENES, RANK() OVER (ORDER BY COUNT(ALUMNO) DESC) POSICION
FROM EXAMENES
GROUP BY ALUMNO


lo cual te regresará EL RANKING O POSICIÓN QUE GUARDAN LOS REGISTROS DE ACUERDO AL TOTAL DE EXÁMENES, es decir, algo como esto:

1
2
3
4
5
6
7
8
+--------+----------------+----------+
| ALUMNO | TOTAL_EXAMENES | POSICION |
+--------+----------------+----------+
| ALU3   |              3 |        1 |
| ALU1   |              2 |        2 |
| ALU2   |              2 |        2 |
+--------+----------------+----------+
7 rows in set (0.00 sec)


es decir, el ALU3 es el que tiene el mejor RANKING o está en "primer lugar (o el que tiene más exámenes), mientras que los otros dos alumnos están empatados en el "segundo lugar"

Dale un vistazo, sigue investigando pero sobre todo sigue practicando, pues hay un mundo de cosas que puedes hacer con SQL y ORACLE.

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