From: | Chad Miller <cmiller+ps(at)surfsouth(dot)com> |
---|---|
To: | pgsql-sql(at)postgresql(dot)org |
Subject: | err: select f() from i where (f()) in (select f() from x group by j); |
Date: | 1999-08-14 00:13:00 |
Message-ID: | 19990813201300.B11645@surfsouth.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
Hi there. Please forgive my igmorance.
I have a table populated with lots of numbers, names, and timestamps. I'd
like to find the max of the sums of the numbers and the timestamp.
That is, find the timestamp and the sum of the numbers when the sum of
the numbers is max. Yow!
This does half -- the summing:
> select timestamp, sum(num) from timelines where (name='foo' or name='bar' or name='baz') group by timestamp;
If I create a view, with
> create view foo as select timestamp, sum(num) from timelines where (name='foo' or name='bar' or name='baz') group by timestamp;
I get:
Table = foo
+----------------------------------+----------------------------------+-------+
| Field | Type | Length|
+----------------------------------+----------------------------------+-------+
| timestamp | datetime | 8 |
| sum | int2 | 2 |
+----------------------------------+----------------------------------+-------+
(Note the fields' naming) Still -- I'd like a more elegant way to do this,
than creating a view.
I came up with:
> select timestamp, max(sum) from timelines where (timestamp, sum) in (select timestamp, sum(num) from timelines where (name='foo' or name='bar' or name='baz') group by timestamp);
...which returns
< ERROR: attribute 'sum' not found
The corresponding column in the view was titled ``sum.'' Hmmm. So, perhaps
fully writing the ``sum(num)'' is correct.
> select timestamp from timelines where (timestamp, sum(num)) in (select timestamp, sum(num) from timelines where (name='foo' or name='bar' or name='baz') group by timestamp);
...which returns
< ERROR: parser: illegal use of aggregates or non-group column in target list
Or...
> select timestamp, max(sum(num)) from timelines where (timestamp, sum(num)) in (select timestamp, sum(num) from timelines where (name='foo' or name='bar' or name='baz') group by timestamp);
...which returns
< ERROR: type id lookup of 223198728 failed
This is making me itch. Advice? Wizardry? Comments? Flames?
- chad
From | Date | Subject | |
---|---|---|---|
Next Message | Mark Dalphin | 1999-08-14 01:05:17 | Anyone recognise this error from PL/pgSQL? |
Previous Message | Hutton, Rob | 1999-08-13 16:40:22 | RE: [SQL] Problems with default date and time |