GROUPing by expressions, and subSELECTs
От | Shane Wright |
---|---|
Тема | GROUPing by expressions, and subSELECTs |
Дата | |
Msg-id | 200202281830.g1SIU1s11290@fullerruss.dsvr.co.uk обсуждение исходный текст |
Ответы |
Re: GROUPing by expressions, and subSELECTs
|
Список | 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
В списке pgsql-sql по дате отправления: