SQL os 5 produtos mais vendidos

Delphi

03/02/2004

Queria fazer um sql que trouxesse os 5 produtos mais vendidos,
como faria isso com union ou como.


Acacio

Acacio

Curtidas 0

Respostas

Motta

Motta

03/02/2004

qual bd ?

alguns tem sintaxe propria para isto

select top ....
sqlserver, se não me engano.

para outros vc pode fazer uma query , desde que aceite tabela virtual

exemplo 5 maiores

valores
---------
qtd_moeda

SELECT *
FROM (SELECT VP1.*,(SELECT COUNT(*)
FROM (SELECT DISTINCT(QTD_MOEDA) QTD_MOEDA
FROM VALORES VP2) T
WHERE T.QTD_MOEDA > VP1.QTD_MOEDA) QTD
FROM VALORES VP1) TUDO
WHERE QTD < 5
ORDER BY 4 DESC


GOSTEI 0
Acacio

Acacio

03/02/2004

Não entendi direito esse teu sql. ali tem vários from dentro de um sql. Isso está certo?


GOSTEI 0
Motta

Motta

03/02/2004

Sim, porém nem todos os bd´s aceitam esta sintaxe.

Diga qual bd vc usa, talvez fique mais fácil ver uma solução


GOSTEI 0
Acacio

Acacio

03/02/2004

Bom,eu estou utilizando por enquanto o paradox, mas em qual banco funciona isso, pois tentei no firebard e tbem não consegui.


GOSTEI 0
Motta

Motta

03/02/2004

Acho que com Paradox não dá para fazer via sql.

tente assim:

faça um sql

select cod_produto,sum(valvendas)
from vendas
order by 2 desc

No Delphi leia o DataSet e Imprima os 5 maiores


GOSTEI 0
Gm.gui

Gm.gui

03/02/2004

Amigo sei que é um pouco tarde, eu também apanhei para este assunto, mas resolvi facíl apesar de tudo,

Como eu queria isso somente para relatório, no rave possui uma opção para imprimir um certa quantidade de linhas, eu queria os 10 primeiros, mandei ele imprimir somenta 10 linhas na databand. com o comando sql foi este

Select produto, Count(produtol) as Quantidade
from vendas
group by produto
having Count(produtol) > 1
order by 2 desc

espero ter ajudo apesar do atraso


GOSTEI 0
Arnaldo Henrique

Arnaldo Henrique

03/02/2004

Gostaria de listar os 10 primeiros registros de um campo em bd Oracle.
Não descobri nenhuma função como First ou top.


GOSTEI 0
Paulo_amorim

Paulo_amorim

03/02/2004

Olá

Tente:

SELECT * FROM tabela
WHERE rownum < 11


Espero que ajude
Até+


GOSTEI 0
Arnaldo Henrique

Arnaldo Henrique

03/02/2004

Brigadão meu chapa!!!
Deu certo, valeu pela força.
Arnaldo


GOSTEI 0
Arnaldo Henrique

Arnaldo Henrique

03/02/2004

analisem minha instrução sql:

Select Sum(F.Total_Produtos) Soma, C.Nome
from Faturamento F, Cad_Clientes C
where F.Cod_Cliente = C.Cod_Cliente and
MES Between vData1 and vData2 and
ANO Between vANO1 and vANO2
Group By C.Nome
Order By Soma Desc

blz, ela atende para que eu quero, mas preciso fazer que o resultado apareca de acordo com um valor que o usuário escolha. Exemplo os 10, 5, 20 maiores resultados.
tentei rownum como foi sugerido mas só deu certo se tirasse as outras condições de busca.
O que fazer?


GOSTEI 0
Arnaldo Henrique

Arnaldo Henrique

03/02/2004

sobe


GOSTEI 0
Arnaldo Henrique

Arnaldo Henrique

03/02/2004

SOBE


GOSTEI 0
POSTAR