Отчет панели управления - Просмотры профиля пользователя

Это SQL-версия отчета по дашборду «Просмотры профиля пользователя».

Этот отчет по дашборду генерирует статистику общего количества просмотров профилей пользователей в день в указанном диапазоне дат.

-- [params]
-- date :start_date = 2024-01-05
-- date :end_date = 2024-02-06

WITH profile_views_per_day AS (
  SELECT
    date_trunc('day', viewed_at) AS day,
    COUNT(*) AS views
  FROM user_profile_views
  WHERE viewed_at >= :start_date AND viewed_at <= :end_date
  GROUP BY day
)
SELECT
  day::date,
  views
FROM profile_views_per_day
ORDER BY day

Пояснение к SQL-запросу

Ниже приведена расшифровка работы запроса:

  • Параметры: Запрос принимает два параметра — :start_date и :end_date, которые позволяют пользователю указать диапазон дат для отчета. Оба параметра даты принимают формат YYYY-MM-DD.
  • Общее табличное выражение (CTE): Запрос начинается с CTE под названием profile_views_per_day. Это временный набор результатов, который будет использоваться в основном запросе.
  • Обрезка даты: Внутри CTE функция date_trunc используется для обрезки временной метки viewed_at до уровня дня. Это означает, что независимо от времени просмотра профиля, учет ведется только по дате.
  • Подсчет просмотров: Функция COUNT(*) подсчитывает количество просмотров профиля для каждого дня.
  • Фильтрация по диапазону дат: Предложение WHERE ограничивает подсчет только просмотрами, произошедшими между параметрами :start_date и :end_date, которые установлены в верхней части запроса.
  • Группировка результатов: Предложение GROUP BY группирует результаты по обрезанному дню, чтобы подсчет просмотров агрегировался по дням.
  • Выборка результатов: Основной оператор SELECT извлекает результаты из CTE. Он выбирает обрезанный день (приведенный к типу date) и количество просмотров за этот день.
  • Сортировка результатов: Наконец, предложение ORDER BY гарантирует, что результаты будут представлены в хронологическом порядке по дням.

Пример результатов

day views
2024-01-05 263
2024-01-06 374
2024-01-07 272
2024-01-08 409
2024-01-09 606
2 лайка