Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Resolução da atividade

Gostaria de verificar se esta consulta funcionaria para a resolução desta atividade, vi que a opinião do instrutor não bateu próxima da minha.

Segue a Query:

SELECT PRODUTO_QUANTIDADE.CODIGO_DO_PRODUTO, PRODUTO_QUANTIDADE.NOME_DO_PRODUTO, PRODUTO_QUANTIDADE.SOMA_QUANTIDADE
FROM
    (
        SELECT CODIGO_DO_PRODUTO, SUM(QUANTIDADE) AS SOMA_QUANTIDADE FROM ITENS_NOTAS_FISCAIS
        WHERE NOME_DO_PRODUTO IN (SELECT NOME_DO_PRODUTO FROM TABELA_DE_PRODUTOS)
    ) PRODUTO_QUANTIDADE
WHERE PRODUTO_QUANTIDADE.SOMA_QUANTIDADE > 39400
ORDER BY PRODUTO_QUANTIDADE.SOMA_QUANTIDADE DESC
2 respostas
solução!

Olá, Renan!

Sua consulta está quase correta, mas há alguns pontos que precisam ser ajustados para resolver a atividade proposta.

A atividade pede para transformar a cláusula HAVING em subconsultas, e você fez isso corretamente. No entanto, você está fazendo a junção entre as tabelas ITENS_NOTAS_FISCAIS e TABELA_DE_PRODUTOS usando o NOME_DO_PRODUTO, quando na verdade, a junção deve ser feita usando o CODIGO_DO_PRODUTO.

Além disso, na subconsulta, você está selecionando o CODIGO_DO_PRODUTO, mas não está selecionando o NOME_DO_PRODUTO, que é necessário para a consulta principal.

Aqui está uma versão corrigida de sua consulta:

SELECT PRODUTO_QUANTIDADE.CODIGO_DO_PRODUTO, TP.NOME_DO_PRODUTO, PRODUTO_QUANTIDADE.SOMA_QUANTIDADE
FROM
    (
        SELECT CODIGO_DO_PRODUTO, SUM(QUANTIDADE) AS SOMA_QUANTIDADE FROM ITENS_NOTAS_FISCAIS
        GROUP BY CODIGO_DO_PRODUTO
        HAVING SUM(QUANTIDADE) > 39400
    ) PRODUTO_QUANTIDADE
INNER JOIN TABELA_DE_PRODUTOS TP 
ON PRODUTO_QUANTIDADE.CODIGO_DO_PRODUTO = TP.CODIGO_DO_PRODUTO
ORDER BY PRODUTO_QUANTIDADE.SOMA_QUANTIDADE DESC;

Espero ter ajudado e bons estudos!

Muito obrigado pelo apoio, Renan!