1
resposta

[Projeto] Resolução

Criei uma tabela com 10 itens de um curso e a nota de cada aluno, abaixo a consulta

SELECT 
    nome,
    curso 
FROM 
    Aluno a 
WHERE id_aluno = (
    SELECT 
        id_aluno 
    FROM 
        Notas n 
    WHERE 
        nota = (
            SELECT 
                MAX(nota)
            FROM 
                Notas n));
1 resposta

Oi Gabriel,

Sua consulta está quase perfeita! 👍

O problema é que a subconsulta que busca o id_aluno está retornando apenas um valor, enquanto pode haver vários alunos com a nota máxima.

Para corrigir isso, você pode usar o operador IN em vez de =. Veja como ficaria:

SELECT 
    nome,
    curso 
FROM 
    Aluno a 
WHERE id_aluno IN (
    SELECT 
        id_aluno 
    FROM 
        Notas n 
    WHERE 
        nota = (
            SELECT 
                MAX(nota)
            FROM 
                Notas n));

Essa alteração garante que você selecione todos os alunos que possuem a nota máxima, e não apenas o primeiro encontrado. 💪

Para saber mais: Subqueries with IN - Documentação oficial do PostgreSQL sobre subconsultas com o operador IN.

Continue praticando e explorando o SQL! 💻