试图获得计数结果集的平均值

Xav*_*jer 25 sql db2 average resultset count

我有以下SQL :( bitemp)

SELECT COUNT (*) AS Count
  FROM Table T
 WHERE (T.Update_time =
           (SELECT MAX (B.Update_time )
              FROM Table B
             WHERE (B.Id = T.Id))
GROUP BY T.Grouping
Run Code Online (Sandbox Code Playgroud)

现在我得到一个有很多数字的结果集.我想得到这份清单的平均值.目前,我将列表导入excel并使用其平均功能.但是DB2有一个AVG函数,但我没有让它工作.

SELECT AVG(COUNT(*))也试过了SELECT AVG(*) FROM (theQuery).

Dav*_*dEG 55

您可以将查询作为子查询:

SELECT avg(count)
  FROM 
    (
    SELECT COUNT (*) AS Count
      FROM Table T
     WHERE T.Update_time =
               (SELECT MAX (B.Update_time )
                  FROM Table B
                 WHERE (B.Id = T.Id))
    GROUP BY T.Grouping
    ) as counts
Run Code Online (Sandbox Code Playgroud)

编辑:我认为这应该是相同的:

SELECT count(*) / count(distinct T.Grouping)
  FROM Table T
 WHERE T.Update_time =
           (SELECT MAX (B.Update_time)
              FROM Table B
             WHERE (B.Id = T.Id))
Run Code Online (Sandbox Code Playgroud)

  • 好的,找到了完美的解决方案,使用`SELECT AVG(CAST(COUNT AS FLOAT))` (5认同)
  • 好吧,由于您的子查询示例,我找到了解决问题的方法.我正在使用它如下:SELECT CAST(sum(Count)AS FLOAT)/ CAST(COUNT(Count)AS FLOAT)...这可以正常工作,谢谢;)(但是我不知道为什么avg返回1,即使是作为浮动投射,结果是1.91 ...... (3认同)