Mam tabela o nazwie Sesje z dwiema kolumnami datetime: początek i koniec.MySQL: Uzyskaj średnią różnic czasowych?
Dla każdego dnia (RRRR-MM-DD) może występować wiele różnych czasów rozpoczęcia i zakończenia (HH: ii: ss). Muszę znaleźć średnią dzienną wszystkich różnic między tymi godzinami rozpoczęcia i zakończenia.
Przykładem kilku rzędach może być:
start: 2010-04-10 12:30:00 end: 2010-04-10 12:30:50
start: 2010-04-10 13:20:00 end: 2010-04-10 13:21:00
start: 2010-04-10 14:10:00 end: 2010-04-10 14:15:00
start: 2010-04-10 15:45:00 end: 2010-04-10 15:45:05
start: 2010-05-10 09:12:00 end: 2010-05-10 09:13:12
...
Różnice czasu (w sekundach) 2010-04-10 to:
50
60
300
5
Średnia dla 2010-04- 10 wynosiłoby 103,75 sekundy. Chciałbym wrócić do mojej kwerendy coś takiego:
day: 2010-04-10 ave: 103.75
day: 2010-05-10 ave: 72
...
mogę uzyskać różnicę czasu pogrupowany według daty rozpoczęcia, ale nie jestem pewien, jak uzyskać średnią. Próbowałem użyć funkcji AVG, ale myślę, że działa ona tylko bezpośrednio na wartościach kolumn (a nie na wyniku innej funkcji agregującej).
To jest to, co mam:
SELECT
TIME_TO_SEC(TIMEDIFF(end,start)) AS timediff
FROM
Sessions
GROUP BY
DATE(start)
Czy istnieje sposób, aby uzyskać średnio timediff dla każdej grupy datę rozpoczęcia? Jestem nowy w agregowaniu funkcji, więc może coś nie rozumiem. Jeśli znasz alternatywne rozwiązanie, udostępnij je.
Zawsze mogę to zrobić ad hoc i obliczyć średnią ręcznie w PHP, ale zastanawiam się, czy istnieje sposób, aby to zrobić w MySQL, dzięki czemu mogę uniknąć uruchamiania wielu pętli.
Dzięki.
Tak, właśnie, zdałem sobie z tego sprawę, jak tylko opublikuję pytanie. Czuję się trochę głupio. Powodem, dla którego nie mogłem go uruchomić, jest to, że robiłem AVG (timediff), i myślę, że musisz przekazać wyrażenie bezpośrednio i nie możesz użyć aliasu. Dzięki. – nebs