Informe del panel - Vistas del perfil de usuario

Esta es una versión SQL del Informe del Panel para Vistas del Perfil de Usuario.

Este informe del panel genera estadísticas sobre el número total de vistas del perfil de usuario por día dentro de un rango de fechas especificado.

-- [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

Explicación de la consulta SQL

Aquí hay un desglose de cómo funciona la consulta:

  • Parámetros: La consulta acepta dos parámetros, :start_date y :end_date, que permiten al usuario especificar el rango de fechas para el informe. Ambos parámetros de fecha aceptan el formato de fecha AAAA-MM-DD.
  • Expresión Común de Tabla (CTE): La consulta comienza con una CTE llamada profile_views_per_day. Este es un conjunto de resultados temporal que utilizaremos en la consulta principal.
  • Truncamiento de Fecha: Dentro de la CTE, la función date_trunc se utiliza para truncar la marca de tiempo viewed_at al día. Esto significa que, independientemente de la hora en que se vio un perfil, se contará según la fecha solamente.
  • Conteo de Vistas: La función COUNT(*) cuenta el número de vistas de perfil para cada día.
  • Filtrado por Rango de Fechas: La cláusula WHERE restringe el conteo para incluir solo las vistas que ocurrieron entre los parámetros :start_date y :end_date, que se establecen en la parte superior de la consulta.
  • Agrupación de Resultados: La cláusula GROUP BY agrupa los resultados por el día truncado para que el conteo de vistas se agregue por día.
  • Selección de Resultados: La declaración SELECT principal recupera los resultados de la CTE. Selecciona el día truncado (convertido a tipo de fecha) y el número de vistas para ese día.
  • Ordenación de Resultados: Finalmente, la cláusula ORDER BY asegura que los resultados se presenten en orden cronológico por día.

Resultados de ejemplo

day views
2024-01-05 263
2024-01-06 374
2024-01-07 272
2024-01-08 409
2024-01-09 606
2 Me gusta