1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

SQL query simples (e programador burro)

Discussão em 'Programação' iniciada por Red_Beret, 12 de Julho de 2008. (Respostas: 8; Visualizações: 1086)

  1. Red_Beret

    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
     
  2. MPalhas

    MPalhas Power Member

    não tenho a certeza, mas

    SELECT produto, SUM(unidades) as soma FROM tabela GROUP BY produto ORDER BY soma DESC LIMIT x
     
  3. Red_Beret

    Red_Beret Power Member

    pois, mas eu precisava mesmo é que ele devolvesse apenas o produto (é para ser usado numa sub-query)
     
  4. nram

    nram Power Member

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

    Cumprimentos.
     
  5. _freelancer_

    _freelancer_ Power Member

    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 
     
  6. Red_Beret

    Red_Beret Power Member

    bem, ficou assim

    Código:
    SELECT TOP (6) Produto FROM Vendas GROUP BY Produto ORDER BY SUM(Quantidade) DESC)


    Obrigado a todos
     
  7. nram

    nram Power Member

    Querias os 6 primeiros registos??
     
  8. Red_Beret

    Red_Beret Power Member

    neste caso deixei a 6, embora inicialmente tivesse dito 2..
     
  9. 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: 18 de Julho de 2008

Partilhar esta Página