2016-07-21 7 views
1

Ich habe folgende TabelleDurchschnittliche Einträge pro Tag in Dataset

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 

Diese Tabelle auf das ganze Jahr über geht und für mehr als 100 Personen. Ich möchte die durchschnittliche Anzahl von Aktivitäten für jede Person erhalten. Wie

, die sagt, dass Ann 3,3 Aktivitäten pro Tag im Dataset-Zeitbereich durchgeführt hat.

Was habe ich versucht, noch ist

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

Aber wenn ich diese laufen bekomme ich mehr als einen Eintrag für jeden Namen. Kann mir jemand helfen, diese Anfrage zu erledigen?

Antwort

1

mithilfe der folgenden Abfrage:

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

Sie die Anzahl der Aktivitäten pro Tag für jede Person zu bekommen. Sie können die oben in einer Unterabfrage wickeln und anzuwenden AVG, um die durchschnittliche Anzahl an Aktivitäten für jede Person zu bekommen:

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

Vielen Dank, das funktioniert perfekt! – ruedi

Verwandte Themen