Postgresql postgres输出查询within子句

Postgresql postgres输出查询within子句,postgresql,Postgresql,我试图将最终查询的with子句中的查询输出作为csv或某种文本文件。我只有查询权限,不允许为此数据库创建表。我有一组对数据集进行计算的查询,另一组对前一组进行计算的查询,还有一组对最后一组进行计算。我不想将所有查询都作为三个独立的查询运行,因为前两个查询的结果实际上在最后一个查询中 WITH Q1 AS( SELECT col1, col2, col3, col4, col5, col6, col7 FROM table1 ), Q2 AS

我试图将最终查询的with子句中的查询输出作为csv或某种文本文件。我只有查询权限,不允许为此数据库创建表。我有一组对数据集进行计算的查询,另一组对前一组进行计算的查询,还有一组对最后一组进行计算。我不想将所有查询都作为三个独立的查询运行,因为前两个查询的结果实际上在最后一个查询中

WITH
    Q1 AS(
        SELECT col1, col2, col3, col4, col5, col6, col7
        FROM table1
    ),
    Q2 AS(
        SELECT AVG(col1) as col1Avg, MAX(col1) as col1Max, col2, col3,col4
        FROm Q1
        GROUP BY col2, col3, col4
    )
SELECT 
    AVG(col1AVG), col3
FROM
    Q2
GROUP BY col3
我希望Q1、Q2和最终select语句的结果最好是3个csv文件,但我可以在一个csv文件中使用所有结果。这可能吗

谢谢


编辑:只是澄清一下,查询中的列非常不同。我从第一个查询中提取的列肯定多于第二个查询。我对上面的代码进行了一些编辑,以使其更加清晰

要将所有结果组合在一起,可以使用UNION all,但列的数量和数据类型必须匹配

select col1, col2, col2
from   blah
union all
select col1, col2, col2
from   blah2
union all
... etc
你可以参考那里的CTE当然

with
  cte_1 as (
    select ... from ...),
  cte_2 as (
    select ... from ... cte_1),
  cte_3 as (
    select ... from ... cte_2)
select col1, col2, col2
from   cte_1
union all
select col1, col2, col2
from   cte_2
union all
select col1, col2, col2
from   cte_3
如果您的最终输出是csv,那么看起来您有多个行格式——校验和?如果是这样的话,在您合并在一起的查询中,您可能希望将每个查询中的所有列合并为一个字符串

with
  cte_1 as (
    select ... from ...),
  cte_2 as (
    select ... from ... cte_1),
  cte_3 as (
    select ... from ... cte_2)
select col1||','||col2||','||col2
from   cte_1
union all
select col1||','||col2
from   cte_2
union all
select col1
from   cte_3

通常,csv文件每行的列数相同。