Fala, Gabriel! Tudo bem?
Muito bom ver você praticando e criando suas próprias soluções em SQL, explorar alternativas é uma ótima forma de aprender de verdade.
Olhando seu código, a estrutura e o relacionamento da subconsulta estão corretos . O ponto é que, do jeito que está, a consulta retorna todos os salários dos colaboradores, junto com seus departamentos.
Como o exercício pede o maior salário por departamento, faltou usar a função de agregação MAX().
Seguindo a sua ideia de começar pela TabelaColaboradores, bastaria aplicar o MAX() no salário e agrupar por departamento com GROUP BY. Ficaria assim:
SELECT (
SELECT dep.NomeDepartamento
FROM TabelaDepartamento AS dep
WHERE dep.id_departamento = col.id_departamento) AS 'Nome departamento',
MAX(col.salario) AS 'Maior salário'
FROM TabelaColaboradores AS col
GROUP BY col.id_departamento;
Já a solução do instrutor faz o caminho inverso: parte da tabela de departamentos e usa a subconsulta para buscar o maior salário na tabela de colaboradores. Essa abordagem costuma ser a mais comum no dia a dia.
Segue testando variações assim , isso fortalece muito seu raciocínio.
Bons estudos!
Sucesso ✨