1
resposta

EXRCICIO.

Veja a consulta abaixo que foi resposta de um exercício anterior.

SELECT INF.CODIGO_DO_PRODUTO, TP.NOME_DO_PRODUTO, SUM(INF.QUANTIDADE) AS QUANTIDADE FROM ITENS_NOTAS_FISCAIS  INF
INNER JOIN TABELA_DE_PRODUTOS TP 
ON INF.CODIGO_DO_PRODUTO = TP.CODIGO_DO_PRODUTO
GROUP BY INF.CODIGO_DO_PRODUTO, TP.NOME_DO_PRODUTO HAVING SUM(INF.QUANTIDADE) > 394000 
ORDER BY SUM(INF.QUANTIDADE) DESC;Copiar código

Redesenhe esta consulta criando uma visão para a lista de quantidades totais por produto e aplicando a condição e ordenação sobre esta mesma visão.

RESULTADO.

CREATE VIEW VW_QUANTIDADE_TOTAL_PRODUTO AS
SELECT 
    INF.CODIGO_DO_PRODUTO, 
    TP.NOME_DO_PRODUTO, 
    SUM(INF.QUANTIDADE) AS QUANTIDADE
FROM ITENS_NOTAS_FISCAIS INF
INNER JOIN TABELA_DE_PRODUTOS TP 
    ON INF.CODIGO_DO_PRODUTO = TP.CODIGO_DO_PRODUTO
GROUP BY INF.CODIGO_DO_PRODUTO, TP.NOME_DO_PRODUTO;
1 resposta

Ei, Leandro! Tudo bem?

Você mandou bem ao usar a visão (VIEW) no SQL pra simplificar as consultas e deixar o código mais claro. A junção e a agregação ficaram organizadinhas, e a lógica de separar o filtro do HAVING numa segunda etapa tá certinha.

Uma dica legal para próxima, é usar SELECT * FROM nome_da_view pra consultar a visão rapidinho. Olha só este exemplo:

 

SELECT * FROM VW_QUANTIDADE_TOTAL_PRODUTO
WHERE QUANTIDADE > 394000
ORDER BY QUANTIDADE DESC;

Esse código consulta a visão que você criou, aplica o filtro e ordena os dados. Isso ajuda a manter o SQL mais modular e reaproveitável.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!