From: | Shane Wright <me(at)shanewright(dot)co(dot)uk> |
---|---|
To: | pgsql-sql(at)postgresql(dot)org |
Subject: | GROUPing by expressions, and subSELECTs |
Date: | 2002-02-28 18:29:57 |
Message-ID: | 200202281830.g1SIU1s11290@fullerruss.dsvr.co.uk |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
Hi
I have somewhat of a problem with what has got to be my biggest query ever.
So y'all dont get put off by the query itself, here's the problem:
It needs to GROUP BY the result of an expression, thats fine, I put the
expression in the fields bit, and GROUP BY the expression at the end:
SELECT
[fields],
[expression]
FROM
table
GROUP BY
[expression]
Now, the problem is that I want to use the result of that expression in a
subquery. So, I tried nam the result of the expression (...[expression] AS
name...), but no luck. So, I recreated the expression in the subquery and
specified the fields used in the expression hoping that might work:
SELECT
[fields],
[expression],
(SELECT * FROM table2 WHERE [expression]) AS mynewfield
FROM
table
GROUP BY
[expression]
But, it gives this error:
ERROR: Sub-SELECT uses un-GROUPed attribute [table].[field] from outer
query
I'm stumped, and the query is screwing with my mind already. Precalculating
the result of the expression into a different isn't an option because of the
structure and context of its use. Anyone got any ideas?
For the brave, here's the query. I know its messy, but it's dynamically
generated - optimisation comes later...
SELECT iid1 AS iid, ((field1 - 1009670400) / 86400) AS period,
(to_char(ROUND((COUNT(iid1))::float / ( SELECT COUNT(rid) FROM table2 AS
myresponses WHERE (sid=922120971) AND (field1>=(table2.field1
- 1009670400) / 86400) AND (field1<=((table2.field1 -
1009670400) / 86400)+86400) )::float * 100.0, 2), '999.99') || '%') AS count
FROM table1, table2 WHERE (nid=870428218) AND (table2.rid=table1.rid) AND
(field1 >= 1009670400) AND (field1 <= 1014940800) GROUP BY
((field1 - 1009670400) / 86400), iid1
...the names have been changed to protect the innocent...
Any help appreciated,
thanks
Shane
From | Date | Subject | |
---|---|---|---|
Next Message | John J. Allison | 2002-02-28 18:54:02 | LIKE with no wildcards problem |
Previous Message | Céline Rivière | 2002-02-28 15:44:42 | CREATE FUNCTION and LANGUAGE 'C' |