2015-06-03 4 views
0

Что я пытаюсь сделать, это получить среднее значение page_visit_duration, но для некоторых строк одна и та же session_id любая строка с дублирующимся идентификатором сеанса просто означает, что посетитель посетил несколько страниц для этих строк с помощью same session_id Мне нужно добавить общий page_visit_duration всех страниц, которые они посещали, прежде чем получать среднее время, проведенное на сайте, как я могу это сделать, и я ничего не мог найти.Получите среднее время посещений

Вот запросы я пытался:

select avg(page_visit_duration) as avgtime from page_views 

select avg(page_visit_duration) as avgtime from page_views group by `session_id` 

обратите внимание на второй запрос возвращает обратно много результатов, мне нужно это, чтобы вернуть 1 средний

То, что я пытаюсь сделать, это получить среднее время, проведенное на нашем сайте за посетителя.

ответ

1

Вы должны сначала сгруппировать свои результаты и принять среднее значение.

SELECT avg(total_duration) as avgtime FROM 
    (SELECT sum(page_visit_duration) as total_duration, session_id FROM page_views group by session_id) sq 
+0

Эй Скотт, спасибо этот запрос расчета времени для всех посетителей длительностей, включая длительность посещения которые имеют только один session_id или только те посещения, у которых есть повторяющиеся идентификаторы сеанса? –

+0

Все сеансы - не просто дубликаты. Внутренний запрос сначала суммирует длительности по идентификатору сеанса, а внешний запрос усредняет их. –

+0

Прекрасное спасибо Скотту. Я очень ценю помощь (: –

0

Другой подход заключается в расчете общее количество времени, и разделить на количество сессий:

select sum(page_visit_duration)/count(distinct session_id) as avgtime 
from page_views 
group by `session_id`; 
Смежные вопросы