1
resposta

Resolução - distribuição dos custos com salários por departamento

Boa tarde!

SELECT
    ID_DEPARTAMENTO,
    TO_CHAR(SUM(SALARIO), 'L999G999G990D00', 'NLS_NUMERIC_CHARACTERS = '',.''') AS TOTAL_SALÁRIOS
FROM
    COLABORADORES
GROUP BY ID_DEPARTAMENTO;

Saída:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá, Estudante. Como vai?

Excelente resolução do exercício! A sua consulta SQL está perfeita e a lógica de agrupamento por departamento utilizando a função de agregação SUM foi aplicada de maneira totalmente correta.

Gostaria de destacar um ponto altíssimo da sua solução que demonstra um nível de capricho avançado: o uso da função TO_CHAR combinada com o parâmetro NLS_NUMERIC_CHARACTERS.

No dia a dia de um analista ou desenvolvedor de banco de dados, extrair apenas o número cru (ex: 150000.50) pode dificultar a leitura dos relatórios por parte das equipes de negócio. Ao aplicar essa máscara de formatação ('L999G999G990D00'), você garantiu que a saída do banco já viesse formatada no padrão de moeda local (R$), com os pontos e vírgulas nos lugares certos para o padrão brasileiro. Isso agrega muito valor ao resultado final!

Uma Alternativa de Organização: Ordenando os Dados

O seu código cumpre perfeitamente o objetivo da atividade. Como uma sugestão de boa prática para deixar relatórios de custos ainda mais fáceis de analisar, você pode adicionar a cláusula ORDER BY no final da consulta.

Em relatórios financeiros de distribuição de custos, costuma ser muito útil visualizar quais departamentos geram mais gastos ou menos gastos de forma ordenada. Veja como o código ficaria:

SELECT
    ID_DEPARTAMENTO,
    TO_CHAR(SUM(SALARIO), 'L999G999G990D00', 'NLS_NUMERIC_CHARACTERS = '',.''') AS TOTAL_SALÁRIOS
FROM
    COLABORADORES
GROUP BY 
    ID_DEPARTAMENTO
ORDER BY 
    SUM(SALARIO) DESC;

O que mudou?

  • ORDER BY SUM(SALARIO) DESC: Adicionando essa linha ao final, o Oracle SQL vai ordenar o resultado colocando o departamento com a maior folha salarial no topo e o menor na base (ordem decrescente).

Note que na cláusula ORDER BY usamos a função agregada SUM(SALARIO) pura em vez do apelido TOTAL_SALÁRIOS, pois dependendo da versão do banco de dados, o interpretador realiza a ordenação antes de aplicar a máscara de formatação do texto.

Parabéns pelo excelente domínio das funções de agregação e formatação no SQL!

Espero que possa ter lhe ajudado!