If you want to use the boolean approach I would just (as suggested earlier) 
cast to integer and sum. Like:
SELECT
sum(good::int) as good,
count(good)-sum(good::int) as "not good"

and so on

I thing the boolean approach seems reasonable if good, nice and fair is three 
separaty judgements as I understand they are.

Regards
Nicklas



----- Original message -----
> Thank you all, I've ended up with the following.
> 
> But I really wonder if using   boolean in my case
> (trying to offer players a web from with 3 x 2 radio buttons
> to rate each other) is really the best choice -
> since it feels a bit awkward (and maybe slow?)
> 
> #   create table pref_rep (
>                                 id varchar(32) references pref_users(id) 
>check (id !=
> author),                               author varchar(32) references 
> pref_users(id),
>                                 good boolean,
>                                 fair boolean,
>                                 nice boolean,
>                                 about varchar(256),
>                                 last_rated timestamp default current_timestamp
>                 );
> 
> # select * from pref_rep ;
>       id     | author | good | fair | nice |     about     |                 
>last_rated
> --------+--------+------+------+------+-----------+----------------------------
>   DE7085 | DE7317 | t       | t       | t       | comment 1 | 2010-11-16
> 20:26:04.780827 DE7085 | DE7336 | t       |           | t       | comment 1 |
> 2010-11-16 20:26:14.510118 DE7085 | DE7641 | t       | f       | t       |
> comment 2 | 2010-11-16 20:26:29.574055 DE7085 | DE7527 | f       | f       | t
>       | comment 3 | 2010-11-16 20:26:45.211207 DE7085 | DE7184 | f       | f  
> 
>   | f       | comment 3 | 2010-11-16 20:26:56.30616 (5 rows)
> 
> # select
> sum(case when good then 1 else 0 end) as good,
> sum(case when not good then 1 else 0 end) as "not good",
> sum(case when fair then 1 else 0 end) as fair,
> sum(case when not fair then 1 else 0 end) as "not fair",
> sum(case when nice then 1 else 0 end) as nice,
> sum(case when not nice then 1 else 0 end) as "not nice"
> from public.pref_rep;
> 
>   good | not good | fair | not fair | nice | not nice
> ------+----------+------+----------+------+----------
>         3 |               2 |       1 |               3 |       4 |           
>    1
> (1 row)
> 
> -- 
> Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-general
> 

Reply via email to