Cheguei ao mesmo resultado que o instrutor dando uma volta ao mundo; fazendo subfunção. Só por curiosidade vou mostrar meu raciocínio, que não está errado. Pra quem quiser se divertir.
1) Notas desdobradas por itens de nota, com imposto calculado para cada item:
select NF.NUMERO, YEAR(NF.DATA_VENDA) AS ANO, INF.QUANTIDADE, INF.PRECO, QUANTIDADE*PRECO AS PRECO_TOTAL, NF.IMPOSTO AS ALÍQUOTA, QUANTIDADE*PRECO*IMPOSTO AS IMPOSTO_PAGO
FROM notas_fiscais NF INNER JOIN itens_notas_fiscais INF
ON NF.NUMERO = INF.NUMERO;
2) Notas agrupadas. Imposto calculado pra cada nota: (sem os campos que não têm mais pertinência com a consulta)
select NF.NUMERO, YEAR(NF.DATA_VENDA) AS ANO, SUM(QUANTIDADE*PRECO) AS PRECO_TOTAL, NF.IMPOSTO AS ALÍQUOTA, SUM(QUANTIDADE*PRECO*IMPOSTO) AS IMPOSTO_PAGO
FROM notas_fiscais NF INNER JOIN itens_notas_fiscais INF
ON NF.NUMERO = INF.NUMERO
GROUP BY NF.NUMERO;
3) Subfunção da consulta 2, pra somar, em uma coluna, o preço total de todas as notas; em outra, o imposto pago total; agrupadas por ano (Retirei a alíquota, que não é mais um campo pertinente à consulta.)
select SUBCON.ANO, SUM(SUBCON.PRECO_TOTAL) AS FATURAMENTO_BRUTO, SUM(SUBCON.IMPOSTO_PAGO) AS IMPOSTO_PAGO
FROM (select NF.NUMERO, YEAR(NF.DATA_VENDA) AS ANO, SUM(QUANTIDADE*PRECO) AS PRECO_TOTAL, NF.IMPOSTO AS ALÍQUOTA, SUM(QUANTIDADE*PRECO*IMPOSTO) AS IMPOSTO_PAGO
FROM notas_fiscais NF INNER JOIN itens_notas_fiscais INF
ON NF.NUMERO = INF.NUMERO
GROUP BY NF.NUMERO) as SUBCON
GROUP BY ANO;
4) Resultado final:
select SUBCON.ANO, FLOOR(SUM(SUBCON.IMPOSTO_PAGO)) AS IMPOSTO_PAGO
FROM (SELECT YEAR(NF.DATA_VENDA) AS ANO, SUM(QUANTIDADE*PRECO*IMPOSTO) AS IMPOSTO_PAGO
FROM notas_fiscais NF INNER JOIN itens_notas_fiscais INF
ON NF.NUMERO = INF.NUMERO
GROUP BY NF.NUMERO) as SUBCON
WHERE ANO = 2016
GROUP BY ANO;
Interessante notar que, se ponho o arrendondamento do FLOOR na subconsulta, o resultado é substancialmente menor. Porque primeiro arredonda pra depois somar. O correto é primeiro somar pra depois arredondar. Diferenças de centavos se transformam facilmente em diferenças de milhares de reais.