From: | Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us> |
---|---|
To: | Mike Mascari <mascarm(at)mascari(dot)com> |
Cc: | PostgreSQL-development <pgsql-hackers(at)postgreSQL(dot)org> |
Subject: | Re: [HACKERS] Using aggregate in HAVING |
Date: | 1999-12-29 20:25:27 |
Message-ID: | 199912292025.PAA09659@candle.pha.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
> Bruce Momjian wrote:
> >
> > How would I get all friends greater than the average age?
> >
> > CREATE TABLE friends (
> > firstname CHAR(15),
> > lastname CHAR(20),
> > age INTEGER)
> >
> > SELECT firstname, lastname
> > FROM friends
> > HAVING age >= AVG(age)
> >
> > ERROR: Attribute friends.firstname must be GROUPed or used in an
> > aggregate function
> >
> > This fails too:
> >
> > SELECT firstname, lastname
> > FROM friends
> > WHERE age >= AVG(age)
> >
> > ERROR: Aggregates not allowed in WHERE clause
> >
> > This fails. I am stumped.
>
> Without using subselects? With subselects you could also do:
>
> SELECT firstname, lastname
> FROM friends
> WHERE age >= (SELECT AVG(age) FROM friends);
>
> Are you writing the chapter on aggregates?
I have finished the aggregate chapter, and am doing the subselect
chapter. I thought using a subselect for this example would be great,
but then I thought, "Gee, why can't HAVING do that?" However, I am
realizing that HAVING can't because without a GROUP BY, it applies to
all rows as a whole, and there is no meaningful GROUP BY for this case.
My subquery figure actually will show how HAVING fails, and how
subqueries allow this. Now, I am just asking for confirmation that this
is true.
--
Bruce Momjian | http://www.op.net/~candle
maillist(at)candle(dot)pha(dot)pa(dot)us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026
From | Date | Subject | |
---|---|---|---|
Next Message | Mike Mascari | 1999-12-29 20:57:44 | Re: [HACKERS] Using aggregate in HAVING |
Previous Message | Mike Mascari | 1999-12-29 20:17:28 | Re: [HACKERS] Using aggregate in HAVING |