1
resposta

Resolução do Desafio

Primeiramente busquei fazer o Inner Join das duas tabelas, sabendo que o número é igual nas duas.

SELECT INTF.CODIGO_DO_PRODUTO, YEAR (NF.DATA_VENDA) AS ANO, (INTF.QUANTIDADEINTF.PRECONF.IMPOSTO) AS IMPOSTO_NA_COMPRA FROM NOTAS_FISCAIS NF INNER JOIN ITENS_NOTAS_FISCAIS INTF ON NF.NUMERO = INTF.NUMERO

feito isso, adicionei o innerjoin em uma SubQuery

SELECT ANO , FLOOR(SUM(IMPOSTO_NA_COMPRA)) FROM ( SELECT INTF.CODIGO_DO_PRODUTO, YEAR (NF.DATA_VENDA) AS ANO, (INTF.QUANTIDADEINTF.PRECONF.IMPOSTO) AS IMPOSTO_NA_COMPRA FROM NOTAS_FISCAIS NF INNER JOIN ITENS_NOTAS_FISCAIS INTF ON NF.NUMERO = INTF.NUMERO ) AS IMPOSTO_PAGO WHERE ANO = 2016 GROUP BY ANO;

1 resposta

Oi Cristin,

Excelente tentativa de resolução do desafio! 👍

Você está no caminho certo ao usar INNER JOIN e SUM com GROUP BY.

A sua subquery está quase perfeita, mas a cláusula WHERE ANO = 2016 dentro da subquery está limitando o resultado a apenas um ano.

Se o objetivo é calcular o imposto total por ano, essa condição deve ser removida.

Aqui está uma sugestão:

SELECT 
    YEAR(NF.DATA_VENDA) AS ANO,
    FLOOR(SUM(INTF.QUANTIDADE * INTF.PRECO * INTF.IMPOSTO)) AS IMPOSTO_TOTAL
FROM NOTAS_FISCAIS NF
INNER JOIN ITENS_NOTAS_FISCAIS INTF ON NF.NUMERO = INTF.NUMERO
GROUP BY YEAR(NF.DATA_VENDA)
ORDER BY ANO;

Essa consulta calcula o imposto total por ano, agrupando os resultados pelo ano da venda e ordenando para facilitar a visualização. 💪

Para saber mais: Documentação oficial do SQL Server sobre a função YEAR.

Continue praticando e explorando as funcionalidades do SQL! 🤔