1
resposta

minha resolução junto com a constução logica

Montei a resposta identificando o que estava em cada pasta, qual a ordem das colunas, fiz duas pequenas queries para garantir que o que tava conseguindo em cada uma era o que eu queria e então juntei para formar a query final q resolve o problema. Em cada query eu identei de uma forma que me ajudou a visualizar o que era o que.

/* 
tabela com colunas: tamanho do produto, ano da venda = 2016, total vendido por 
tamanho e percentagem em relação ao total das vendas
codigo_do_produto, numero e quantidade na inf
data_venda e numero nas nf
codigo_do_produto e tamanho na TP
*/
#tabela por tamanho
select TP.TAMANHO as tamanho, year(NF.DATA_VENDA) as ano, sum(INF.QUANTIDADE) as quantidade 
from 
    itens_notas_fiscais INF
    inner join notas_fiscais NF 
        on NF.NUMERO = INF.NUMERO
    inner join tabela_de_produtos TP
        on TP.CODIGO_DO_PRODUTO = INF.CODIGO_DO_PRODUTO
where 
    year(NF.data_venda) = 2016
group by 
    TP.TAMANHO,  year(NF.DATA_VENDA);
    
#tabela sem o total
select TP.TAMANHO as tamanho, year(NF.DATA_VENDA) as ano, sum(INF.QUANTIDADE) as quantidade 
from 
    itens_notas_fiscais INF
    inner join notas_fiscais NF 
        on NF.NUMERO = INF.NUMERO
    inner join tabela_de_produtos TP
        on TP.CODIGO_DO_PRODUTO = INF.CODIGO_DO_PRODUTO
where 
    year(NF.data_venda) = 2016
group by 
    TP.TAMANHO,  year(NF.DATA_VENDA);

#tabela  total
select year(NF.DATA_VENDA) as ano, sum(INF.QUANTIDADE) as total 
from 
    itens_notas_fiscais INF
    inner join notas_fiscais NF 
        on NF.NUMERO = INF.NUMERO
where 
    year(NF.data_venda) = 2016
group by 
    year(NF.DATA_VENDA);
    
#juntando 
select vendas_tamanho.TAMANHO, vendas_tamanho.ano, 
vendas_tamanho.QUANTIDADE, round(vendas_tamanho.quantidade/vendas_total.total * 100, 2) as participacao
from 
    (select TP.TAMANHO as tamanho, year(NF.DATA_VENDA) as ano, sum(INF.QUANTIDADE) as quantidade 
        from 
            itens_notas_fiscais INF
            inner join notas_fiscais NF 
                on NF.NUMERO = INF.NUMERO
            inner join tabela_de_produtos TP
                on TP.CODIGO_DO_PRODUTO = INF.CODIGO_DO_PRODUTO
        where 
            year(NF.data_venda) = 2016
        group by 
            TP.TAMANHO,  year(NF.DATA_VENDA))
     as vendas_tamanho
     inner join 
     (select year(NF.DATA_VENDA) as ano, sum(INF.QUANTIDADE) as total 
        from 
            itens_notas_fiscais INF
            inner join notas_fiscais NF 
                on NF.NUMERO = INF.NUMERO
        where 
            year(NF.data_venda) = 2016
        group by 
            year(NF.DATA_VENDA))
     as vendas_total
        on vendas_tamanho.ano = vendas_total.ano
order by 
    vendas_tamanho.QUANTIDADE desc;
1 resposta

Oii, tudo certo por aí?

Uau! Excelente resolução para o exercício, você mandou muito bem.

Sua resposta está bem detalhada e completa, tenho certeza que será uma inspiração para outras pessoas que também estão acompanhando o curso.

Continue com este capricho sempre! Se alguma dúvida surgir durante os seus estudos, fico à disposição para ajudar.

Um forte abraço!