lexis72
1.07.2014, 18:37:08
3 kolumny : user, data, zadanie
Przykladowe dane:
Tomek - 2014-05-13 20:23- A
Barbara - 2014-05-13 20:24 - A
Wieslaw - 2014-05-13 20:25 - D
Tomek - 2014-05-13 20:26 - B
Barbara - 2014-05-13 20:30 - B
Jakim zapytanie otrzymam informacje jaka byla srednia roznica w czasie poszczegolnych userow miedzy zadaniem A i B. Czyli pomijamy wszystkie inne zadania i patrzymy kiedy Tomek wykonal A i kiedy B i obliczamy roznice w czasie. Tak samo robimy ze wszsytkimi innymi userami ktorzy zrobili te 2 czynnosci a nastepnie wyciagamy sredni wynik.
trueblue
1.07.2014, 19:03:42
Każdy użytkownik wykonywał poszczególne zadanie 1 raz?
Jeśli tak, to tu średnia nie jest potrzebna.
Chyba, że chcesz obliczyć średnią względem wszystkich użytkowników.
lexis72
1.07.2014, 19:17:34
To ma byc srednia ze wszystkich uzytkownikow.
W tym momencie nie interesuje mnie personalizacja wynikow a wylacznie ogolna srednia czasu w jakim ci uzytkownicy wykonali te cwiczenie. Zatem jesli dany user zrobil te czynnosci wiele razy to tez je uwzgledniamy do sredniej. (mam oczywiscie na uwadze ze kolejne proby zapewne beda krotsze i wplynie to na ostateczna srednia ale nie ma to w tym momencie dla mnie znaczenia)
Zasada co do zapytania jest taka ze liczymi ile czasu zajelo uzytkownikowi wykonanie zadania 'A'. Ze wzgledu na to ze zadania wykonywane sa jeden po drugim mozemy sie tego dowiedziec dzieki roznicy w czasie miedzy zadaniem pierwszym i drugim.
trueblue
1.07.2014, 19:29:42
Czyli może być tak, że Tomek wykonał 2 razy pod rząd zadanie A, a potem B?
Jeśli tak, to jak będą wyglądać przykładowe dane?
lexis72
1.07.2014, 19:51:57
Teoretycznie jest to mozliwe w przypadku gdy zaczal wykonywac zadanie A i z jakis powodow przestal i wylaczyl strone. Wtedy gdy np nastepnego dnia znowu sie zalogowal zeby wykonac te zadanie i je dokonczyl to w bazie zostanie faktycznie zapisane dwukrotnie pod rzad z jego nickiem wykonywanie zadania A a potem pojedyncze wykonanie zadania B. W takim przypadku wypadaloby liczyc czas miedzy ostatnim A bedacym przed B w zapisach danego uzytkownika. Jesli to warunek zbyt trudny do wprowadzenia to mozna rozwazyc jakies nagiecie tego bo zbior jest tak duzy ze takich przypadkow nie bedzie az tak duzo by drastycznie wplynely na wynik sredniej ale oczywiscie fajnie byloby to uwzglednic.
trueblue
1.07.2014, 21:28:17
To jest zapytanie liczące średnią z różnicy czasów (w sekundach) pomiędzy zadaniem A i B, przy założeniu, że zadanie A jest wykonywane wcześniej od B i każdy użytkownik wykonał konkretne zadanie 1 raz:
SELECT AVG(TIME_TO_SEC(TIMEDIFF(t2.DATA,t1.DATA))) AS roznica
FROM tabela AS t1,tabela AS t2
WHERE t1.user=t2.user
AND t1.zadanie='A'
AND t2.zadanie='B'
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.