Попытка получить среднее значение результата подсчета - PullRequest
22 голосов
/ 12 октября 2011

У меня есть следующий 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

теперь я получаю набор результатов с большим количеством цифр. Я хочу получить среднее значение этого списка. На данный момент я импортирую список в Excel и использую его усредненную функцию. Но есть функция AVG для DB2, но я не получил ее работать.

Я пытался SELECT AVG(COUNT(*)), а также SELECT AVG(*) FROM (theQuery).

1 Ответ

50 голосов
/ 12 октября 2011

Вы просто можете разместить свой запрос как подзапрос:

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

Редактировать: я думаю, что это должно быть то же самое:

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