SQL query simples (e programador burro)

Red_Beret

Power Member
Boas

Tou aqui com um pequeno problema.

Tenho uma tabela de vendas, que tem tres colunas, a chave, o produto, e a quantidade.

Preciso de uma query (que é bué simples, mas eu tou com uma branca enorme), que me devolva, os primeiros x produtos, que tem mais unidades vendidas.

Algo deste genero:

Tabela:

Chave - Produto - Unidades

1 - 3 - 5
2 - 4 - 2
3 - 3 - 2
4 - 2 - 5
5 - 4 - 3

Resultado esperado (para 1ºs 2 registos com mais unidades vendidas):

Produto
4
3
 
é só trocar o X por 1... rapaz... LIMIT apenas te limita o número de resultados.

Cumprimentos.

Posso estar enganado mas quando ele diz que quer apenas o produto significa que quer apenas a coluna com o ID do produto e não o primeiro registo.

Não tenho a certeza de que isto funcione, e penso que pode até variar de SGBD para SGBD, mas experimenta:
Código:
SELECT produto FROM tabela GROUP BY produto ORDER BY SUM(unidades) DESC LIMIT x

Caso contrário podes sempre tentar algo menos elegante:
Código:
SELECT t.produto FROM (
SELECT produto, SUM(unidades) as soma FROM tabela GROUP BY produto ORDER BY soma DESC LIMIT x ) t
 
ou

Código:
select *
from (select codigo,produto,sum(quantidade) Quantidade
from tabela
group by codigo,produto
order by 3 desc)
where rownum<=6

sendo 6 o numero de campos que queres mostrar do maior para o mais pequeno
 
Última edição pelo moderador:
Back
Topo