2016-07-21 3 views
1

У меня есть следующая таблицаСредних данных за день в наборе данных

Name|Date  |Activity 
Ann |2016-01-01|Sleep 
Ann |2016-01-01|Walk 
Pete|2016-01-01|Sleep 
Pete|2016-01-01|Walk 
Pete|2016-01-01|Swim 

Эта таблица продолжается в течение всего года и в течение более чем 100 людей. Я хочу получить средний объем действий для каждого человека. Как

Ann |3.3, 
Pete|4.2 

, который говорит, что Энн делала 3,3 мероприятия в день в таймере тайм-аута.

То, что я пытался до сих пор является

Select count(Date), Name from table 
group by date, name 

Но когда я запускаю это я получаю больше, чем одну запись для каждого имени. Может ли кто-нибудь помочь мне сделать этот запрос?

ответ

1

Используя следующий запрос:

SELECT Name, [Date], COUNT(*) AS cnt 
    FROM mytable 
    GROUP BY Name, [Date] 

вы получите количество мероприятий в день для каждого человека. Вы можете обернуть выше в подзапрос и применять AVG для того, чтобы получить среднее количество мероприятий для каждого человека:

SELECT Name, AVG(cnt*1.0) 
FROM (
    SELECT Name, [Date], COUNT(*) AS cnt 
    FROM mytable 
    GROUP BY Name, [Date]) AS t 
GROUP BY t.Name 
+0

Спасибо большое, это работает отлично! – ruedi

Смежные вопросы