2017-07-03 12 views
0

Ich habe eine Tabelle, die den Benutzer zum Zeitpunkt der Überprüfung (Datum_Zeit) und den Namen des Benutzers enthält, der auf die Ressource zugreift. Ich möchte die Benutzer, die das System verwenden, zählen, wobei ich davon ausgehe, dass der Benutzer nur dann rechenschaftspflichtig ist, wenn er länger als 5 Minuten Zugriff hatte.mysql: Zähle die Anzahl der Benutzer, die auf eine Ressource zugreifen, für eine bestimmte Zeit basierend auf dem 1-Stunden-Intervall

date_time   user_access 
2017-06-24 09:01:59 mike 
2017-06-24 09:04:13 mike 
2017-06-24 09:07:13 mike 
2017-06-24 09:11:14 joe 
2017-06-24 09:18:17 ron 
2017-06-24 09:24:10 rick 
2017-06-24 09:25:24 ron 
2017-06-24 09:39:16 ron 
2017-06-24 09:44:07 ron 
2017-06-24 09:51:44 mary 
2017-06-24 09:54:27 joe 
2017-06-24 09:58:55 joe 

Ich erwarte, dass das Ergebnis

sein
date_time interval user_count 
2017-06-24 09:00  3 
2017-06-24 10:00  0 

(Zählung nur Mike, Ron und Joe - weil sie für mehr als 5 Minuten angemeldet wurden und nicht Rick und Mary zu zählen, weil sie nur protokolliert wurden Einmal).

Vielen Dank im Voraus!

Antwort

0

Wenn Sie die Anzahl der Benutzer muss ich die letzte Stunde

select date(date_time), HOUR(date_time), count(distinct user) 
FROM my_table 
date_time >= date_sub(NOW(), interval 1 hour) 
group by date(date_time), HOUR(date_time) 

und dies sollte das Ergebnis für die für mehr als 5 Minuten protokolliert Benutzer sein wählen

select date(date_time), HOUR(date_time), count(distinct user) 
    FROM my_table 
    date_time >= date_sub(NOW(), interval 1 hour) 
    group by date(date_time), HOUR(date_time) 
    and user_access in ( 
     select user_access 
     from my_table 
     where timediff(max(date_time), min(date_time))/60 > 5 
     group by user_access 
    ) 
+0

Dank! Es ist OK für den Teil der Frage. Ich brauche einen Weg, um die Benutzer zu zählen, die mindestens 5 Minuten geloggt wurden. Irgendwelche Ideen? – zeb

+0

beantworten udpdate mit den 5 Minuten Benutzer – scaisEdge

Verwandte Themen