Re: count(1) return 0? - Mailing list pgsql-general
From | Zak McGregor |
---|---|
Subject | Re: count(1) return 0? |
Date | |
Msg-id | 20040301032739.42c0bee5.zak@mighty.co.za Whole thread Raw |
In response to | Re: count(1) return 0? (Klint Gore <kg@kgb.une.edu.au>) |
Responses |
Re: count(1) return 0?
Re: count(1) return 0? |
List | pgsql-general |
On Mon, 01 Mar 2004 12:13:07 +1100 Klint Gore <kg@kgb.une.edu.au> wrote: > On Mon, 1 Mar 2004 02:14:56 +0200, Zak McGregor <zak@mighty.co.za> wrote: > > to return a 0 value instead of absolutely nothing if no rows match > > fixture=4916 and winner=away? I get absolutely no results at all. > > > > any ideas please? > > dont group by winner. it's not returned in the statement so it's not > needed anyway. an exact value is specified in the where clause so it's > not going to be different either. Thanks Klint, that works. I will need to group by fixture though (not winner - that was just one of the permutations that I was playing around with) at some point which presents the same problem. I have a number of fixtures in the results table which need to be aggregated to tally frames won per player per fixture (stored as a view) and those results further aggregated to find points for a points table. All is good until a player has won no frames in a fixture, at which point the fact that an empty result is returned becomes problematic. For instance: select fixture, count(1) as total, away from results where winner=away group by fixture, away; fixture | total | away ---------+-------+------ 4913 | 4 | 1214 4916 | 9 | 1200 4918 | 7 | 1123 4928 | 9 | 1318 4935 | 5 | 1265 (5 rows) select fixture, count(1) as total, home from results where winner=home group by fixture, home; fixture | total | home ---------+-------+------ 4913 | 9 | 1198 4918 | 9 | 1257 4928 | 1 | 1401 4935 | 9 | 1359 (4 rows) in fixture 4916, player 1200 won 9-0, but his opponent does not show as having 0 in the second result set. I suspect what I am expecting is somehow illogical, but I can't see why. I would expect to see a total of 0 for the case where winner=away and fixture=4916 = the fixtures are after all being grouped - if there are zero cases where fixture=4916 and winner=away, as far as I can see that should be the count() result... however as I said I am probably missing something quite basic. If anyone could please explain why what I expect to see is not what I actually see I would be very grateful indeed. Thanks Ciao Zak -- ======================================================================== http://www.carfolio.com/ Searchable database of 10 000+ car specs ========================================================================
pgsql-general by date: