Why does aggregate query allow select of non-group by or aggregate values?

From: Jack Christensen <jackc(at)hylesanderson(dot)edu>
To: pgsql-general(at)postgresql(dot)org
Subject: Why does aggregate query allow select of non-group by or aggregate values?
Date: 2011-12-09 22:48:00
Message-ID: 4EE29020.2010603@hylesanderson.edu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

CREATE TABLE people(
id serial PRIMARY KEY,
name varchar NOT NULL
);

INSERT INTO people(name) VALUES('Adam'), ('Adam'), ('Adam'), ('Bill'),
('Sam'), ('Joe'), ('Joe');

SELECT name, count(*), random()
FROM people
GROUP BY name;

I would expect this query to cause an error because of random(). I ran
into this using an array produced by a subquery as a column in the
select of an aggregate query, but I was able to boil it down to this
contrived example. Shouldn't any expression that is not in the group by
or an aggregate function be rejected?

What am I not understanding?

Thanks.

--
Jack Christensen
jackc(at)hylesanderson(dot)edu

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Henry Drexler 2011-12-09 22:51:54 Re: Why does aggregate query allow select of non-group by or aggregate values?
Previous Message Peter Geoghegan 2011-12-09 19:49:12 Re: Is the a "magic number" for WAL files