Select 10 produtos mais vendido - Firebird

11/05/2022

7

Olá galera! um help!

Tenha uma tabela de venda e uma tabela foreign Key Venda Produto. Quero um select no qual o resultado me informe quais os 10 produtos mais comprados por um determinado cliente.

Tenho o seguinte select:

select first 10
a.id_cliente,
a.nome_cliente,
b.cod_prod,
b.descricao,
sum(b.qtd) as Qtd,
b.vlr_unitario,
sum(b.vlr_total) as Total
from
venda_orc_prod b
left join
venda_orc A on b.id_venda = a.id
where
a.id_cliente = '4'
group by b.cod_prod, b.qtd, b.vlr_unitario, b.vlr_total, b.descricao,
a.id_cliente, a.nome_cliente
order by b.qtd desc;



Só que o resultado não está listada em ordem como informado no script (Order By), é está repetindo determinados registros.


ID_CLIENTE NOME_CLIENTE COD_PROD DESCRICAO QTD VLR_UNITARIO TOTAL
4 LUCAS OLIVEIRA DA SILVA 3 BATERIA 150AP HONDA BIZ 3,00 159,00 477,00
4 LUCAS OLIVEIRA DA SILVA 5 BANCO CG125 HONDA 3,00 69,00 207,00
4 LUCAS OLIVEIRA DA SILVA 7 CUBO ROLAMENTO DIANTEIRO HONDA BIZ 3,00 121,00 363,00
4 LUCAS OLIVEIRA DA SILVA 1 ENGRENAGEM CABECOTE MOTOR HONDA 2,00 80,00 160,00
4 LUCAS OLIVEIRA DA SILVA 14 REALACAO BROS CG 150 2,00 114,00 228,00
4 LUCAS OLIVEIRA DA SILVA 3 BATERIA 150AP HONDA BIZ 1,00 159,00 159,00
4 LUCAS OLIVEIRA DA SILVA 4 RODA DIANTEIRA CG150 YAMAHA 1,00 138,00 138,00
4 LUCAS OLIVEIRA DA SILVA 5 BANCO CG125 HONDA 3,00 69,00 207,00
4 LUCAS OLIVEIRA DA SILVA 6 RELACAO COMPLETA TITAN 150 HONDA 2,00 95,00 190,00
4 LUCAS OLIVEIRA DA SILVA 7 CUBO ROLAMENTO DIANTEIRO HONDA BIZ 2,00 121,00 242,00

Jefferson

Jefferson

Responder

Posts

11/05/2022

Jefferson

Galera o resultado em .txt creio que não vai dar para entender muito bem, vou colocar um png aqui para facilitar.

https://1drv.ms/u/s!AskL4Hbn-91uiGiy3a9rlu2TmG1z?e=AMZVAe
Responder

12/05/2022

Emerson Nascimento

tente assim:
select first 10
	a.id_cliente,
	a.nome_cliente,
	b.cod_prod,
	b.descricao,
	sum(b.qtd) as qtd,
	avg(b.vlr_unitario) vlrunit,
	sum(b.vlr_total) as Total
from
	venda_orc_prod b
left join
	venda_orc a on a.id = b.id_venda
where
	a.id_cliente = '4'
group by
	a.id_cliente,
	a.nome_cliente,
	b.cod_prod,
	b.descricao
order by
	sum(b.qtd) desc;
Responder

13/05/2022

Jefferson

Olá amigo! Alguns registros ainda se repetem.

O group by ficou dessa forma:

group by
a.id,
b.cod_prod,
b.und_venda,
b.vlr_total,
b.descricao,
a.id_cliente,
a.nome_cliente
order by
sum(b.qtd) desc;


Caso eu coloque conforme o seu post tenho a seguinte mensagem de erro:

SQL error code = -104.
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause).
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários,
consulte nossa política de privacidade.

Aceitar