web-dev-qa-db-fra.com

Essayer d'obtenir la moyenne d'un ensemble de résultats de comptage

J'ai le SQL suivant: (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

maintenant j'obtiens un jeu de résultats avec beaucoup de nombres. Je veux obtenir la moyenne de cette liste. Pour le moment, j'importe la liste dans Excel et j'utilise sa fonction moyenne. Mais il y a une fonction AVG pour DB2, mais je ne l'ai pas fait fonctionner.

J'ai essayé SELECT AVG(COUNT(*)) et aussi SELECT AVG(*) FROM (theQuery).

22
Xavjer

Vous pouvez simplement mettre votre requête en sous-requête:

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

Edit: je pense que cela devrait être le même:

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))
52
DavidEG