Foi solicitado a uma empresa de grande porte da área de Tecnologia da Informação que retornasse a data máxima de forma descrescente das faturas por fornecedor, a fim de orquestrar melhor a gestão dos prazos junto ao departamento financeiro.
Sendo você o DBA responsável pelo banco de dados, esclareça qual é a melhor forma de realizar essa consulta, sabendo que há duas tabelas (tb_fornecedores e tb_faturas) e o objetivo é retornar as datas máximas de forma descrescente das faturas por fornecedor. Exemplifique.
*Observação: nas tabelas de faturas, tem-se Id_fornecedor como ID do fornecedor.
Soluções para a tarefa
Resposta:Padrão de resposta esperado
Para calcular a data máxima de forma decrescente das faturas para cada fornecedor na tabela de fornecedores, é preciso utilizar uma subquerie referenciando a coluna Id_fornecedor presente na tabela de Faturas, em uma consulta externa.
Utiliza-se, então, uma subconsulta (subquerie) com o SELECT:
SELECT DISTINCT FornecedorNome,
(SELECT MAX(DtFatura) FROM Faturas
WHERE Faturas.Id_fornecedor = Fornecedores.Id_fornecedor) AS UltimaFatura
FROM Fornecedores
ORDER BY UltimaFatura DESC;
A outra forma de se realizar a consulta é através da junção de tabelas (join). Nesse caso, foi utilizado uma subconsulta (subquerie), mas também seria possível empregar a junção entre tabelas.
Logo, é possível demonstrar que tanto as subqueries como os joins são fundamentais para a realização de consultas avançadas.
Explicação: