1
resposta

Erro

está dizendo que a coluna não existe, por que?

SELECT nome_marca, round(100.0*Total_Vendas/(select count(*) from itens_venda), 2) || '%' as porcentagem
from (
  select nome as nome_marca, count(venda_id) as Total_Vendas
  from marcas
  join itens_venda
  on itens_venda.produto_id = produtos.id_produto
  join fornecedores
  on fornecedores.id_fornecedor = produtos.fornecedor_id
  join produtos
  on produtos.marca_id = marcas.id_marca
  group by nome_produto
)
GROUP by nome

tabela de marcas

erro

1 resposta

Oii, Guilherme! Tudo bem?

Pelo seu código podemos ver que o agrupamento está acontecendo por nome que no escopo. Uma sugestão é agrupar por nome_marca, por exemplo:

SELECT nome_marca, round(100.0*Total_Vendas/(select count(*) from itens_venda), 2) || '%' as porcentagem
FROM (
  select nome as nome_marca, count(venda_id) as Total_Vendas
  from marcas
  join itens_venda
  on itens_venda.produto_id = produtos.id_produto
  join fornecedores
  on fornecedores.id_fornecedor = produtos.fornecedor_id
  join produtos
  on produtos.marca_id = marcas.id_marca
  group by nome_produto
)
GROUP BY nome_marca;

Dessa forma deixamos o agrupamento dos resultados mais coerente com o nome da marca que foi criado.

Espero que dê certo.

Bons estudos e até mais!