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)
.
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))