У меня есть две таблицы, содержащие данные сессий веб-сайта:
Сеансы - идентификатор_ сессии (PK), сессия_даты, источник_ трафика
PageViews - event_id (PK), session_id, timestamp, page_name
Как получить количество сеансов за данный день, суммированное по целевой странице (первая страница, увиденная в сеансе)?
Предположим, что это пример данных в двух таблицах:
Сеансы:
SESSION_ID SESSION_DATE TRAFFIC_SOURCE
1 24-FEB-19 Google
2 23-FEB-19 Amazon
3 22-FEB-19 Clickstream
4 21-FEB-19 BloggerVlogger
5 24-FEB-19 DuckDuckGoGo
Просмотры страниц:
EVENT_ID SESSION_ID TIMESTAMP PAGE_NAME
11 1 24-FEB-19 12.10.09.000000 PM Home_page
12 2 23-FEB-19 01.10.09.000000 PM Catalog
13 3 22-FEB-19 02.10.09.000000 PM Shopping_Cart
14 4 21-FEB-19 03.10.09.000000 PM Home_page
15 5 24-FEB-19 04.10.09.000000 PM Purchase_Summary
16 5 24-FEB-19 05.10.09.000000 PM Purchase_History
Я пытался:
select
session_date,
count(s.session_id) as count_of_sessions,
min(p.timestamp) as first_page_timestamp
from sessions s, pageviews p
where s.session_id=p.session_id
group by session_date
И вот такой вывод я получаю:
SESSION_DATE COUNT_OF_SESSIONS FIRST_PAGE_TIMESTAMP
21-FEB-19 1 21-FEB-19 03.10.09.000000 PM
22-FEB-19 1 22-FEB-19 02.10.09.000000 PM
24-FEB-19 2 24-FEB-19 04.10.09.000000 PM
24-FEB-19 1 24-FEB-19 12.10.09.000000 PM
23-FEB-19 1 23-FEB-19 01.10.09.000000 PM
Если я включу page_name
в оператор выбора и предложение group_by,он дает мне ВСЕ страницы для этого сеанса (Purchase_Summary
и Purchase_History
для session_id
5), и мне нужна только первая страница (Purchase Summary
).
Как я могу включить имя_страницы в свой запрос SQL, когда я хочу группировать только по дате сеанса?Должен ли я использовать что-то, кроме группы по?