Используя Oracle SQL, я пытаюсь рассчитать общее количество уникальных посещений сайта. Таблица, которую я использую для написания запроса, не имеет метки времени, которая включает минуты и секунды, только DDMMYY, и каждая строка в таблице представляет клик клиента на странице. Таблица обозначает новый «сеанс» каждый час, независимо от того, отражает ли это фактически новое посещение от POV клиента. Что я должен сделать, это использовать непоследовательные сессии в качестве прокси для уникальных посещений. Таким образом, если между посещениями есть часовой перерыв, предыдущей последовательной группировкой считается одно посещение. Я определяю визит как уникальную комбинацию идентификатора клиента + день сеанса + час сеанса. Если в комбинации клиент + день имеются последовательные часы сеансов, я считаю это одним сеансом. Поле HOUR содержит строковые значения, которые объединяют дату с часом. Для того, чтобы сделать соответствующий расчет количества посещений, мне нужно будет разобрать час и вычесть из предыдущей строки (задержки), чтобы определить, больше ли это «разрыв» часа.
Example of Raw Data:
TRANS_TO_DATE CUSTOMER_ID HOUR
10/21/17 1007589445 October 21, 2017, Hour 1
10/21/17 1007589445 October 21, 2017, Hour 2
10/21/17 1007589445 October 21, 2017, Hour 2
10/21/17 1007589445 October 21, 2017, Hour 2
10/21/17 1007589445 October 21, 2017, Hour 3
10/21/17 1007589445 October 21, 2017, Hour 5
10/21/17 1007589445 October 21, 2017, Hour 6
10/21/17 1007589445 October 21, 2017, Hour 23
10/21/17 1007589445 October 21, 2017, Hour 23
10/21/17 1007589445 October 21, 2017, Hour 23
11/1/17 1007589445 November 1, 2017, Hour 10
1/1/18 1007589445 January 1, 2018, Hour 10
1/1/18 1007589445 January 1, 2018, Hour 10
1/1/18 1007589445 January 1, 2018, Hour 11
1/1/18 1007589445 January 1, 2018, Hour 14
1/1/18 1007589445 January 1, 2018, Hour 20
1/1/18 1007589445 January 1, 2018, Hour 22
Количество посещений на самом деле таково:
Customer_id Day Hour Visit Grouping
1007589445 October 21, 2017 1 Visit 1
1007589445 October 21, 2017 2 Visit 1
1007589445 October 21, 2017 3 Visit 1
1007589445 October 21, 2017 5 Visit 2
1007589445 October 21, 2017 6 Visit 2
1007589445 October 21, 2017 23 Visit 3
1007589445 November 1, 2017 10 Visit 1
1007589445 January 1, 2018 10 Visit 1
1007589445 January 1, 2018 11 Visit 1
1007589445 January 1, 2018 14 Visit 2
1007589445 January 1, 2018 20 Visit 3
1007589445 January 1, 2018 21 Visit 4
Клиент 1007589445 имел
3 посещения 21 октября 2017 г. - 1 посещение 1 ноября 2017 г. - 4 посещения на 1 января 2018 года
Всего посещений: 8
Ниже приведен код sql, который у меня имеется, который должен быть изменен, чтобы соответствовать приведенным выше критериям.
select
CUSTOMER_ID,
TRANS_TO_DATE,
HOUR,
count (HOUR) as visits
from mstr_clickstream_vw
where trans_to_date between start_date and end_date
and web_store_ind='US'
group by CUSTOMER_ID, TRANS_TO_DATE,HOUR