1
resposta

Minha resolução

Olá, bom dia. Fiz uma solução minha a respeito do exercício de identificação do maior salário em um dado departamento.

Poderiam avaliar minha sugestão, por favor?

SELECT (
  SELECT dep.NomeDepartamento
  FROM TabelaDepartamento AS dep
  WHERE (dep.id_departamento = col.id_departamento)) AS 'Nome departamento',
  col.salario AS 'Maior salário'
from TabelaColaboradores AS col;
1 resposta

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

Imagem da comunidade