Это SQL-версия отчета о сводном количестве просмотров страниц.
Этот SQL-отчет предоставляет ежедневный подсчет просмотров страниц от авторизованных пользователей, анонимных пользователей и поисковых роботов на сайте Discourse.
-- [params]
-- date :start_date
-- date :end_date
SELECT
ar.date::date AS "date",
SUM(ar.count) AS "Total Views",
SUM(CASE WHEN ar.req_type=6 THEN ar.count ELSE 0 END) AS "Crawler Views",
SUM(CASE WHEN ar.req_type=7 THEN ar.count ELSE 0 END) AS "Logged in User Views",
SUM(CASE WHEN ar.req_type=8 THEN ar.count ELSE 0 END) AS "Anonymous User Views"
FROM application_requests ar
WHERE req_type IN (6,7,8)
AND ar.date::date BETWEEN :start_date AND :end_date
GROUP BY date
ORDER BY date
Пояснение к SQL-запросу
Запрос работает с таблицей application_requests, которая регистрирует различные типы запросов, отправляемых на форум. Он фокусируется на трех конкретных типах запросов, определяемых значениями req_type:
6: Просмотры поисковыми роботами7: Просмотры авторизованными пользователями8: Просмотры анонимными пользователями
Ниже приведено пошаговое пояснение того, что делает запрос:
- Параметры: Запрос принимает два параметра —
:start_dateи:end_date, что позволяет пользователю указать диапазон дат для отчета. Оба параметра даты принимают форматГГГГ-ММ-ДД. - Выборка: Запрос выбирает дату запроса (
ar.date) и приводит её к типуdate. Также он вычисляет общее количество просмотров и разбивку по типам (поисковые роботы, авторизованные пользователи и анонимные пользователи) для каждой даты в указанном диапазоне. - Суммирование: Он суммирует столбец
countдля каждого типа просмотра. КонструкцииCASEиспользуются для условного включения подсчетов в сумму на основе значенияreq_type. - Фильтрация: Оператор
WHEREфильтрует записи, включая только те, у которых значенияreq_typeравны 6, 7 или 8, а даты попадают в указанный диапазон между:start_dateи:end_date. - Группировка: Запрос группирует результаты по дате, обеспечивая агрегацию подсчетов для каждого типа просмотра по дням.
- Сортировка: Результаты сортируются по дате, чтобы обеспечить хронологический просмотр трафика.
Пример результатов
| date | Total Views | Crawler Views | Logged in User Views | Anonymous User Views |
|---|---|---|---|---|
| 2023-11-18 | 5608 | 3052 | 565 | 1928 |
| 2023-11-19 | 9207 | 6564 | 470 | 2273 |
| 2023-11-20 | 6271 | 2631 | 1016 | 2924 |

