Duvida GROUP BY , ORDER BY
Bom galera , sou novato e estou com dúvidas sobre como usar esses comandos no SQLDataSet que iria me gerar um relatório sobre produtos vendidos, nome do cliente , total do pedido , etc...
o select é esse
gostaria de saber como funciona o ´ Group By ´ e o ´ Order by ´ quem puder ajudar fico grato ! :wink:
o select é esse
select PE.ID_PEDIDO , C.NOME , PE.DATA , Sum(I.QUANTIDADE*I.PRECO) as TotalPedido from PEDIDOS PE , CLIENTES C , ITENSPEDIDOS I where PE.ID_CLIENTE = C.ID_CLIENTE and PE.ID_PEDIDO = I.ID_PEDIDO and PE.DATA between :DataIni and :DataFin Group by C.NOME , PE.DATA , PE.ID_PEDIDO order by C.NOME , PE.DATA desc
gostaria de saber como funciona o ´ Group By ´ e o ´ Order by ´ quem puder ajudar fico grato ! :wink:
Psyjacko
Curtidas 0
Respostas
Afo
10/04/2008
Amigo,
não utilizo o SQLDataSet, mas vê se funciona assim :
select PE.ID_PEDIDO , C.NOME , PE.DATA , Sum(I.QUANTIDADE*I.PRECO) as TotalPedido from
PEDIDOS PE , CLIENTES C , ITENSPEDIDOS I where
PE.ID_CLIENTE = C.ID_CLIENTE and PE.ID_PEDIDO = I.ID_PEDIDO
and PE.DATA between :DataIni and :DataFin
// Entenda que serão agrupados todos os registros com os tres campos iguais. Se por exemplo a data de um registro for diferente da outra, mesmo o id_pedido e o nome sendo iguais, será agrupado separadamente.
// Aqui vc coloca os campos do select
Group by PE.ID_PEDIDO , C.NOME , PE.DATA
//Se vc quiser filtrar pelo resultado do Group by use
Having Sum(I.QUANTIDADE*I.PRECO) > 0 // Por Exemplo
// Desta forma fica em ordem de NOME e depois em ordem de DATA
order by C.NOME , PE.DATA desc
Espero ter ajudado !
não utilizo o SQLDataSet, mas vê se funciona assim :
select PE.ID_PEDIDO , C.NOME , PE.DATA , Sum(I.QUANTIDADE*I.PRECO) as TotalPedido from
PEDIDOS PE , CLIENTES C , ITENSPEDIDOS I where
PE.ID_CLIENTE = C.ID_CLIENTE and PE.ID_PEDIDO = I.ID_PEDIDO
and PE.DATA between :DataIni and :DataFin
// Entenda que serão agrupados todos os registros com os tres campos iguais. Se por exemplo a data de um registro for diferente da outra, mesmo o id_pedido e o nome sendo iguais, será agrupado separadamente.
// Aqui vc coloca os campos do select
Group by PE.ID_PEDIDO , C.NOME , PE.DATA
//Se vc quiser filtrar pelo resultado do Group by use
Having Sum(I.QUANTIDADE*I.PRECO) > 0 // Por Exemplo
// Desta forma fica em ordem de NOME e depois em ordem de DATA
order by C.NOME , PE.DATA desc
Espero ter ajudado !
GOSTEI 0
Facc
10/04/2008
gostaria de saber como funciona o ´ Group By ´ e o ´ Order by ´ quem puder ajudar fico grato ! :wink:
Group By = Agrupa valores iguais
Order By = Ordena por ordem numérica ou alfabetica (depende do campo escolhido)
no seu caso o [b:e78bba1000]desc[/b:e78bba1000] ordena por ordem decrescente ( maior pro menos ou z ao a)
GOSTEI 0
Psyjacko
10/04/2008
Poxa eu entendí mais ou menos , o ORDER BY eu entendí mas o GROUP BY tá complicado , eu reparei que se usa o GROUP BY sempre quando tem uma
agregação tipo essa
flw :wink:
agregação tipo essa
Sum(I.QUANTIDADE*I.PRECO)
flw :wink:
GOSTEI 0
Facc
10/04/2008
Poxa eu entendí mais ou menos , o ORDER BY eu entendí mas o GROUP BY tá complicado , eu reparei que se usa o GROUP BY sempre quando tem uma
agregação tipo essa [quote:5d6e6a617e]Sum(I.QUANTIDADE*I.PRECO)
flw :wink:[/quote:5d6e6a617e]
Vc está certo... sempre é usado com isso um SUM.
Vou tentar explicar melhor, o GROUP BY, traduzindo ao pé da letra é AGRUPAR POR, esse agrupamento pode ser por Código, Datas, Algum Status.
Select CodCli, Nome, Sum(ValorVenda) from Vendas GROUP BY CodCli, Nome
Esse select ele irá somar o valor da venda agrupando pelo Codigo e nome
GOSTEI 0