Re: coalesce and aggregate functions
От | Kevin Grittner |
---|---|
Тема | Re: coalesce and aggregate functions |
Дата | |
Msg-id | 457E77DE.EE98.0025.0@wicourts.gov обсуждение исходный текст |
Ответ на | coalesce and aggregate functions (Patrick Welche <prlw1@newn.cam.ac.uk>) |
Список | pgsql-hackers |
COALESCE returns the leftmost non-null value. Perhaps what you wanted was sum(coalesce(b,0)) instead of coalesce(0,sum(b)) >>> On Tue, Dec 12, 2006 at 9:22 AM, in message <20061212152219.GC290@quartz.itdept.newn.cam.ac.uk>, Patrick Welche <prlw1@newn.cam.ac.uk> wrote: > Is this a bug, or don't I understand coalesce()? > > create table test (a int, b int); > insert into test values (1,null); > insert into test values (2,1); > insert into test values (2,2); > select * from test; -- returns: > select sum(b) from test where a=1; -- null > select sum(b) from test where a=2; -- 3 > select coalesce(0,sum(b)) from test where a=1; -- 0 > select coalesce(0,sum(b)) from test where a=2; -- 0 > delete from test where a=1; > select coalesce(0,sum(b)) from test where a=2; -- 0 ! > > So when I use coalesce() with sum(), I always get the constant. I would > have expected it only in the case where sum() returns null.. > > What am I missing?
В списке pgsql-hackers по дате отправления: