разница между конкретными рядами - PullRequest
0 голосов
/ 05 июля 2018

Я бы хотел приблизить продолжительность пребывания пользователей по внешней ссылке. Поэтому я хочу видеть разницу между тем, когда они нажимают на внешнюю ссылку и когда их следующий щелчок происходит на моем веб-сайте.

Моя база данных выглядит следующим образом (указаны важные столбцы):

  • clsfd_session_id (идентификатор для каждой сессии, я бы хотел потратить время на внешнюю ссылку на сеанс).
  • clsfd_event_action: какой клик выполняется на сайте (например, клик по внешней ссылке).
  • clsfd_total_event: количество кликов, выполненных событием.
  • clsfd_event_categ: к какой категории относится действие события.
  • hit_start_time_num: когда действие выполнено (в секундах).

Пока что я идентифицировал все сессии, которые имеют> 1 clsfd_event_action. Однако мне трудно отфильтровать, что сеанс ДОЛЖЕН иметь клик по внешней ссылке, а также другие clsfd_event_action (s).

select clsfd_session_id, count(*)
from table
group by 1
having clsfd_session_id> 1

Я хочу, чтобы все сеансы имели щелчок по внешней ссылке (= R2SExternalBegin), а после этого еще одну строку (чтобы сеансы не заканчивались, а посетитель возвращался на мой сайт).

На рисунке ниже вы можете увидеть 1 сеанс, включая 1 щелчок по внешней ссылке (R2SExternalBegin), за которым следует 1 / более строк (таким образом, сеанс не заканчивается на внешней ссылке) . Разница между числами в последнем столбце красного прямоугольника - это время, потраченное на внешнюю ссылку. enter image description here

Вывод, который я хочу: Все сеансы, которые имеют 1 / более R2SExternalBegin clsfd_event_action, следуют за другой строкой (что означает, что пользователь возвращается на сайт). Обратите внимание, что существует около 50 различных clsfd_event_actions.

1 Ответ

0 голосов
/ 05 июля 2018
select clsfd_session_id, count(*)
from table
group by 1
having
   -- there was a 'R2SExternalBegin'
   min(case when clsfd_event_action  = 'R2SExternalBegin' then hit_start_time_num end)
   -- and there was different action later
 < max(case when clsfd_event_action <> 'R2SExternalBegin' then hit_start_time_num end)
...