Re: [pgbr-geral] Melhorar consulta.

2009-01-19 Por tôpico Antonio Prado
Em Sáb, 2009-01-17 às 23:56 -0200, Euler Taveira de Oliveira escreveu:
> Fernando Brombatti escreveu:
> > Imaginemos 3 valores: 2, 3 e -10; o SUM() dessa brincadeira é -5, logo
> > não retornará 0 como o colega estava querendo (ao menos foi o que deixou
> > transparecer), mas sim retornará -5. O COALESCE() retorna o primeiro
> > valor NAO-NULO de uma seqüência de valores.
> > 
> É claro que foi uma suposição baseado no nome da tabela (cheque_recebido) e
> campo (valor). Em um modelo de dados consistente o campo 'valor' teria duas
> restrições (NOT NULL e > 0) e, assim, ele não precisaria do COALESCE e nem do
> CASE. Mas uma coisa é fato: o COALESCE gasta menos ciclos de CPU do que o CASE
> (acho que era isso que ele queria saber).

Correto, a minha principal preocupação em melhoria foi em relação
questão ao desempenho.

Quanto ao haver utilizado o CASE foi por considerar a inexistência de
cheques de um determinado cliente, o que provocaria o retorno de um
valor NULO e neste caso deve retornar ZERO.

Assim sendo, o COALESCE, me pareceu ser uma melhor opção do que o CASE.

Abrigado a todos pela colaboração.

-- 
Antonio Prado


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Melhorar consulta.

2009-01-17 Por tôpico Euler Taveira de Oliveira
Fernando Brombatti escreveu:
> Imaginemos 3 valores: 2, 3 e -10; o SUM() dessa brincadeira é -5, logo
> não retornará 0 como o colega estava querendo (ao menos foi o que deixou
> transparecer), mas sim retornará -5. O COALESCE() retorna o primeiro
> valor NAO-NULO de uma seqüência de valores.
> 
É claro que foi uma suposição baseado no nome da tabela (cheque_recebido) e
campo (valor). Em um modelo de dados consistente o campo 'valor' teria duas
restrições (NOT NULL e > 0) e, assim, ele não precisaria do COALESCE e nem do
CASE. Mas uma coisa é fato: o COALESCE gasta menos ciclos de CPU do que o CASE
(acho que era isso que ele queria saber).


-- 
  Euler Taveira de Oliveira
  http://www.timbira.com/
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Melhorar consulta.

2009-01-17 Por tôpico Alfredo Júnior

Fernando Brombatti escreveu:

Talvez essa não seja a melhor forma ainda...

Imaginemos 3 valores: 2, 3 e -10; o SUM() dessa brincadeira é -5, logo 
não retornará 0 como o colega estava querendo (ao menos foi o que 
deixou transparecer), mas sim retornará -5. O COALESCE() retorna o 
primeiro valor NAO-NULO de uma seqüência de valores.
Mas pelo select dele está falando de cheque_recebido.. nunca vi um 
cheque com valor menor ou igual a um ...


Saludos.

On Sat, Jan 17, 2009 at 11:26, Euler Taveira de Oliveira 
mailto:eu...@timbira.com>> wrote:


Antonio Prado escreveu:
> Considerando que o retorno deve ser um número, a consulta abaixo
pode
> ser melhorada?
>
> SELECT CASE
>   WHEN sum(valor)>0
>   THEN sum(valor)
>   ELSE 0
>END
> FROM cheque_recebido
> WHERE cliente_id = 15007
>
SELECT COALESCE(SUM(valor), 0) FROM cheque_recebido WHERE
cliente_id = 15007


--
 Euler Taveira de Oliveira
 http://www.timbira.com/
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br

https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




--
Fernando Brombatti
email-msn-gtalk-skype:
bromba...@gmail.com 
work: +55 54 3218-6060
home: +55 54 3028-7217
mobile: +55 54 9189-7970
Visite press.datamais.com 


___
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


Re: [pgbr-geral] Melhorar consulta.

2009-01-17 Por tôpico Fernando Brombatti
Talvez essa não seja a melhor forma ainda...

Imaginemos 3 valores: 2, 3 e -10; o SUM() dessa brincadeira é -5, logo não
retornará 0 como o colega estava querendo (ao menos foi o que deixou
transparecer), mas sim retornará -5. O COALESCE() retorna o primeiro valor
NAO-NULO de uma seqüência de valores.

Saludos.

On Sat, Jan 17, 2009 at 11:26, Euler Taveira de Oliveira
wrote:

> Antonio Prado escreveu:
> > Considerando que o retorno deve ser um número, a consulta abaixo pode
> > ser melhorada?
> >
> > SELECT CASE
> >   WHEN sum(valor)>0
> >   THEN sum(valor)
> >   ELSE 0
> >END
> > FROM cheque_recebido
> > WHERE cliente_id = 15007
> >
> SELECT COALESCE(SUM(valor), 0) FROM cheque_recebido WHERE cliente_id =
> 15007
>
>
> --
>  Euler Taveira de Oliveira
>  http://www.timbira.com/
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>



-- 
Fernando Brombatti
email-msn-gtalk-skype:
bromba...@gmail.com
work: +55 54 3218-6060
home: +55 54 3028-7217
mobile: +55 54 9189-7970
Visite press.datamais.com
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Melhorar consulta.

2009-01-17 Por tôpico Euler Taveira de Oliveira
Antonio Prado escreveu:
> Considerando que o retorno deve ser um número, a consulta abaixo pode
> ser melhorada?
> 
> SELECT CASE
>   WHEN sum(valor)>0 
>   THEN sum(valor)
>   ELSE 0
>END 
> FROM cheque_recebido 
> WHERE cliente_id = 15007
> 
SELECT COALESCE(SUM(valor), 0) FROM cheque_recebido WHERE cliente_id = 15007


-- 
  Euler Taveira de Oliveira
  http://www.timbira.com/
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral