Here is create and insert script:
CREATE TABLE numbers (
id integer NOT NULL,
number1 integer NOT NULL
);
INSERT INTO numbers (id, number1) VALUES
('1', '1'),
('2', '1'),
('1', '2'),
('1', '3');
if the sum of number1 column is even return its average, other wise return 0. So it should return [id:1, number1:0] for above example
I have tried this:
select id,
case
when sum(number1) %2=1 then 0 else avg(number1)
end as number1
from numbers
it works fine with mySql but not for PostgreSQL (I used http://sqlfiddle.com to try it out). error message in PostgreSQL is
ERROR: column "numbers.id" must appear in the GROUP BY clause or be used in an aggregate function