在postgresql中使用最小、最大(总和/计数)子查询

在postgresql中使用最小、最大(总和/计数)子查询,sql,postgresql,subquery,Sql,Postgresql,Subquery,我有一张事实表: 步骤有唯一的持续时间,文件夹有一个或多个步骤,过程也有多个文件夹 我想使用SQL PostgreSQL查询得到这个结果,这意味着获取文件夹的最小和持续时间、文件夹的最大和持续时间以及按优先级分组的所有文件夹的平均值 我尝试使用子查询解决它: 选择PROCEDURE.NAME、minDUR、MAXDUR、SUMDUR/COUNTDISTINCT ID\u文件夹 从…起 从事实表中选择ID\u文件夹,将持续时间总和为DUR 按ID分组\u文件夹 PROCEDURE.ID=FACT

我有一张事实表:

步骤有唯一的持续时间,文件夹有一个或多个步骤,过程也有多个文件夹

我想使用SQL PostgreSQL查询得到这个结果,这意味着获取文件夹的最小和持续时间、文件夹的最大和持续时间以及按优先级分组的所有文件夹的平均值

我尝试使用子查询解决它: 选择PROCEDURE.NAME、minDUR、MAXDUR、SUMDUR/COUNTDISTINCT ID\u文件夹 从…起 从事实表中选择ID\u文件夹,将持续时间总和为DUR 按ID分组\u文件夹 PROCEDURE.ID=FACT\u TABLE.ID\u PROCEDURE上的内部联接过程 按过程名称分组;
但没用,我错过什么了吗?这种逻辑有什么错

查询背后的想法应该是可行的。有一些调整:

SELECT p.NAME, MIN(pf.DUR), MAX(pf.DUR), AVG(pf.DUR)
FROM (SELECT f.ID_PROCEDURE, f.ID_FOLDER, SUM(f.DURATION) as DUR
      FROM FACT_TABLE f
      GROUP BY f.ID_PROCEDURE, f.ID_FOLDER
     ) pf JOIN
     PROCEDURE p
     ON p.ID = pf.ID_PROCEDURE 
GROUP BY p.NAME;
注:

在子查询中包含ID_过程,因此它可以用于连接和聚合是正确的。 所有表的表别名定义。 使用限定列名以避免歧义。 使用更简单的平均值,而不是总和与计数之比。
它怎么不起作用?提供示例数据和结果来说明问题。好吧,我在连接函数中遇到了一个问题,它不是那样工作的。我不知道他为什么不知道。另外,当我在子查询中执行GROUPBY时,在pgAdmin中也是错误的