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

está certo?

oii tudo bem? espero que sim, eu fiz o de fato o exercicio que o professor mostrou em aula: Insira aqui a descrição dessa imagem para ajudar na acessibilidade minha query que resolve isso:

select TABELAA.sabor, TABELAA.ano, TABELAA.soma as total, round((TABELAA.soma / TABELAB.soma) * 100,2) as percentual from (select TP.sabor, extract(YEAR from NF.data_venda) as ano, round(sum(quantidade * preco),2) as SOMA from tabela_de_produtos TP inner join itens_notas_fiscais INF on TP.codigo_do_produto = INF.codigo_do_produto inner join notas_fiscais NF on INF.numero = NF.numero where year(data_venda) = 2016 group by TP.sabor, extract(YEAR from NF.data_venda)) TABELAA inner join (select round(sum(quantidade * preco),2) as SOMA from tabela_de_produtos TP inner join itens_notas_fiscais INF on TP.codigo_do_produto = INF.codigo_do_produto inner join notas_fiscais NF on INF.numero = NF.numero where year(data_venda) = 2016) TABELAB order by percentual DESC;

foi a solução que eu fiz primeiramente sozinho e só depois eu vi o video, estava querendo me desafiar ^^,

queria saber se a minha solução está correta, desse desafio: Insira aqui a descrição dessa imagem para ajudar na acessibilidade a solução:

select TABELAA.tamanho, TABELAA.ano, TABELAA.soma as vendas_total, round((TABELAA.soma / TABELAB.soma) * 100,2) as percentual from (select TP.tamanho, extract(YEAR from NF.data_venda) as ano, round(sum(quantidade * preco),2) as SOMA from tabela_de_produtos TP inner join itens_notas_fiscais INF on TP.codigo_do_produto = INF.codigo_do_produto inner join notas_fiscais NF on INF.numero = NF.numero where year(data_venda) = 2016 group by TP.tamanho, extract(YEAR from NF.data_venda)) TABELAA inner join (select round(sum(quantidade * preco),2) as SOMA from tabela_de_produtos TP inner join itens_notas_fiscais INF on TP.codigo_do_produto = INF.codigo_do_produto inner join notas_fiscais NF on INF.numero = NF.numero where year(data_venda) = 2016) TABELAB order by percentual DESC;

agradeço desde já!

2 respostas
solução!

Chará Leonardo, muito boa sua atenção na aula. Vi seu SQL e pra mim não vi nada de errado, a não ser que, preferiu da ênfase ao campo SABOR e na solução proposta pelo professor utilizou o campo TAMANHO.

Para melhor análise, eu prefiro endenta o sql, e ao final ficou assim, idênticos se não você pela troca do campo. Meu parabéns, continue assim!

select TABELAA.sabor, 
       TABELAA.ano, 
       TABELAA.soma as total, 
       round((TABELAA.soma / TABELAB.soma) * 100,2) as percentual 
  from (select TP.sabor, extract(YEAR from NF.data_venda) as ano, round(sum(quantidade * preco),2) as SOMA 
          from tabela_de_produtos TP 
         inner join itens_notas_fiscais INF 
            on TP.codigo_do_produto = INF.codigo_do_produto 
         inner join notas_fiscais NF 
            on INF.numero = NF.numero 
         where year(data_venda) = 2016 
         group by TP.sabor, extract(YEAR from NF.data_venda)
       ) TABELAA 
   inner join (select round(sum(quantidade * preco),2) as SOMA 
                 from tabela_de_produtos TP 
                   inner join itens_notas_fiscais INF 
                   on TP.codigo_do_produto = INF.codigo_do_produto 
            inner join notas_fiscais NF 
                   on INF.numero = NF.numero 
               where year(data_venda) = 2016
              ) TABELAB 
order by percentual DESC;
======================================================================================================================================
select     TABELAA.tamanho, 
    TABELAA.ano, 
    TABELAA.soma as vendas_total, 
    round((TABELAA.soma / TABELAB.soma) * 100,2) as percentual 
  from (select TP.tamanho, extract(YEAR from NF.data_venda) as ano, round(sum(quantidade * preco),2) as SOMA 
      from tabela_de_produtos TP 
         inner join itens_notas_fiscais INF 
            on TP.codigo_do_produto = INF.codigo_do_produto 
         inner join notas_fiscais NF 
            on INF.numero = NF.numero 
         where year(data_venda) = 2016 
         group by TP.tamanho, extract(YEAR from NF.data_venda)
       ) TABELAA 
  inner join (select round(sum(quantidade * preco),2) as SOMA 
        from tabela_de_produtos TP 
               inner join itens_notas_fiscais INF 
                  on TP.codigo_do_produto = INF.codigo_do_produto 
               inner join notas_fiscais NF 
                  on INF.numero = NF.numero 
               where year(data_venda) = 2016
             ) TABELAB 
order by percentual DESC

Obrigado chará ;)