2017-01-25 5 views
1

Ich habe ein kleines Problem, um Statistiken zu machen.Wie erhalten Sie die Zuschauer nach Zeit von der Startzeit und der Dauer der Ansicht?

Menschen können Videos auf meiner Website sehen. Ich speichere einige Daten in MySQL-Tabelle videos_has_views

IdUser = the watcher ID 
ddv = date of view = the start time of the view 
duration = the duration of the view 

was würde Ich mag es eine Reihe von bekommen, wie viele Zuschauer durch Zeitbereich aktiv waren.

Zum Beispiel:

John start viewing at 2017-01-01 00:00:00 and watch video for 1800 seconds (30mn) 

Hodor start viewing at 2017-01-01 00:00:00 and watch video for 1200 seconds (20mn) 

Rob start viewing at 2017-01-01 00:10:00 and watch video for 1800 seconds (30mn) 

Ich versuche, eine Reihe zu bekommen wie

From 0 to 10min : 2 viewers (john + hodor)  
From 10 to 20min : 3 viewers  
From 20 to 30 : 2 viewers (john + Rob)  
From 30 to 40 : 1 viewer (rob) 

Aber ich weiß nicht, wie dieses Problem mit mysql angreifen .. oder mit einer Schleife in PHP? Wenn jemand eine Idee für mich haben werde ich sehr dankbar

+0

Du bist nicht konkret enuff hier. Aber Suchfunktionen in mysql wie 'BETWEEN' und DATE Funktionen. Ich denke, Sie können eine SQL erstellen für: Geben Sie mir alle Zuschauer, die Video xy gesehen haben, von Y-M-DH: I: S, für 10 Minuten. Aber du musst es selbst ausprobieren. google mehr und du wirst einige Hinweise finden. https://dev.mysql.com/doc/refman/5.7/en/ – JustOnUnderMillions

+0

Wie sieht Ihre SQL-Tabelle aus? –

+0

Zeigen Sie uns die Tabelle und einige Beispieldaten .. kein Bild außer Text –

Antwort

0

Vielleicht so etwas?

SELECT 
    CASE 
    WHEN duration BETWEEN 0 AND 600 THEN '0to10' 
    WHEN duration BETWEEN 601 AND 1200 THEN '10to20' 
    WHEN duration BETWEEN 1201 AND 1800 THEN '20to30' 
    ELSE 'moreThan30' 
    END as duration_range, 
    count(IdUser) as cnt 
FROM videos_has_views 
GROUP BY duration_range 
ORDER BY duration_range ASC; 

Sie können so viele Bereiche wie Sie wollen ... es (zumindest in MySQL 5.7) Wenn Sie möchten enthalten Namen in einer anderen Spalte dann funktioniert (da wir GROUP BY verwenden) können Sie benutze GROUP CONCAT von names/userIDs oder was auch immer :)

+0

hi. Danke für deine Antwort. Ich denke, es ist eine gute Tracks, aber nicht das Ziel, das ich suche. Hier haben wir festgestellt, wie viele Nutzer zwischen X Sekunden und X + 10 Sekunden geschaut haben, unabhängig von der Startzeit der Wiedergabe. Was ich tun möchte, ist eine Kurve des Publikums zum Zeitpunkt T während meiner Sendung zu erstellen. Hier funktioniert Ihre Methode nur, wenn jeder Nutzer gleichzeitig zuschaut: - / –

Verwandte Themen