Osvaldo, arrumei um livro de BD e logo vou estar bem se deus quiser. Obrigado, vo testar. Vc pode me ajudar em mais uma coisa. Estou pelejando e não consegui. Tenho os seguintes dados:
bordero ------- Numero: 001 Valor: 100,00 Comissao: 10,00 Parcelas -------- Numero: 001 Parcela: 1 Valor: 50,00 Numero: 001 Parcela: 2 Valor: 50,00 Se faço um select assim: Select sum(parcela.valor) as valor, sum(borderô.comissao) as comissão from borderô inner join parcelas on borderô.numero = parcela.numero Como tenho duas parcelas do borderô 1, vai me retornar o valor da comissão duplicado. Deu pra entender. Acho que vo precisar dum subselect. Pode me auxiliar? Obrigado. -----Mensagem original----- De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Em nome de Osvaldo Kussama Enviada em: sexta-feira, 23 de maio de 2008 13:04 Para: Comunidade PostgreSQL Brasileira Assunto: Re: [pgbr-geral] RES: RES: RES: RES: Ajuda em Select 2008/5/23 Osvaldo Rosario Kussama <[EMAIL PROTECTED]>: > Saulo Morais Lara escreveu: >> >> Sim >> >> -----Mensagem original----- >> De: [EMAIL PROTECTED] >> [mailto:[EMAIL PROTECTED] Em nome de Leandro >> DUTRA >> Enviada em: quarta-feira, 21 de maio de 2008 17:49 >> Para: Comunidade PostgreSQL Brasileira >> Assunto: Re: [pgbr-geral] RES: RES: RES: Ajuda em Select >> >> 2008/5/21 Saulo Morais Lara <[EMAIL PROTECTED]>: >>> >>> Vamos ver se explico melhor. Esta consulta pegará a ultima compra de cada >>> cliente, e de qto em qto tempo ele compra, a partir da data do pedido. >>> Por exemplo, 1 cliente tem 2 pedidos, um com data de 10/05/2008 e outro >> >> com >>> >>> 20/05/2008. O prazo de uma compra pra outra foi de 10 dias. >>> Entao saira: Cliente: Fulano, Ultima compra: 20/05/2008, Frequencia: 10 >> >> Você quer uma média? >> > > > Isto está com cara dever de casa mas vamos lá: > > -- Média de dias entre pedidos > SELECT p3.pedclicod, AVG(p3.dias) > FROM (SELECT p1.pedclicod, (p1.pddata - MAX(p2.peddata)) AS dias > FROM pedidos p1 JOIN pedidos p2 ON (p1.pedclicod = p2.pedclicod AND > p1.peddata > p2.peddata) > GROUP BY p1.pedclicod) p3 > GROUP BY p3.pedclicod > ORDER BY p3.pedclicod; > > Você tem que prestar atenção em duas condições de contorno que não entram no > cálculo da média acima: > > -- Clientes sem pedidos registrados > SELECT clicod, clinome > FROM cliente LEFT OUTER JOIN pedidos > ON (clicod = pedclicod) > WHERE pedclicod IS NULL; > > > -- Clientes com um único pedido registrado > SELECT clicod, clinome > FROM cliente JOIN pedidos > ON (clicod = pedclicod) > GROUP BY clicod, clinome > HAVING count(*) = 1 > ORDER BY clicod; > > Osvaldo > > Só mais um detalhe: Se você tiver mais de um pedido no mesmo dia sua média estará deturpada. Neste caso você pode criar uma numeração auxiliar (por ex. uma sequência) e utilizá-la para pegar o próximo pedido. Osvaldo _______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral _______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral