Segue a resolução do problema, visto que muitos utilizam a função de agregação MAX. Desta vez utilizei ORDER BY DES. Na questão de desempenho / performance do banco, qual a melhor maneira de utilização, MAX ou ORDER BY DESC?
create TABLE ALUNOS(
ID_ALUNO INTEGER PRIMARY KEY AUTOINCREMENT,
NOME VARCHAR (150) NOT NULL,
CURSO VARCHAR (200) NOT NULL
);
CREATE TABLE NOTAS(
ID_NOTA INTEGER PRIMARY KEY AUTOINCREMENT,
FKID_ALUNO INT,
NOTA FLOAT (10,2),
FOREIGN KEY (FKID_ALUNO) REFERENCES ALUNOS(ID_ALUNO) ON DELETE CASCADE
);
INSERT INTO ALUNOS (NOME, CURSO) VALUES ('Ana Paula Silva', 'Engenharia de Software'),
('Bruno Marques', 'Ciência da Computação'),
('Carlos Alberto Souza', 'Engenharia de Software'),
('Daniela Fernandes', 'Sistemas de Informação'),
('Eduardo Lima', 'Análise e Desenvolvimento de Sistemas'),
('Fernanda Oliveira', 'Engenharia de Computação'),
('Gustavo Ferreira', 'Redes de Computadores'),
('Helena Costa', 'Engenharia de Software'),
('Isabela Mendes', 'Sistemas de Informação'),
('João Pedro Santos', 'Análise e Desenvolvimento de Sistemas');
INSERT INTO NOTAS (FKID_ALUNO, NOTA) VALUES (1, 8.5),
(2, 7.3),
(3, 9.0),
(4, 6.7),
(5, 8.2),
(6, 7.5),
(7, 9.1),
(8, 6.9),
(9, 8.8),
(10, 7.2),
(11, 9.5);
SELECT NOME, CURSO FROM ALUNOS WHERE ID_ALUNO = (SELECT fkid_aluno FROM NOTAS ORDER BY NOTA DESC LIMIT 1);
Sempre que crio uma FOREIGN KEY, para melhor identificação sempre utilizo fkid_(nome da coluna). É uma dica que acredito ajudar bastante.