Este es una versión SQL del informe del panel de control de los principales usuarios por “me gusta” recibidos.
Este informe del panel de control muestra los principales usuarios de un sitio por la cantidad de “me gusta” recibidos en todas las publicaciones. El informe ayuda a los administradores a identificar a los usuarios altamente comprometidos contando los “me gusta” recibidos dentro de un período determinado, lo que ayuda a reconocer a los miembros activos, evaluar la calidad del contenido, monitorear las tendencias de participación de los usuarios y tomar decisiones informadas de gestión de la comunidad, como la selección de moderadores.
--[params]
--date :start_date = 2024-01-01
--date :end_date = 2025-01-01
SELECT
ua.user_id AS user_id,
u.username as username,
COUNT(*) likes_received
FROM user_actions ua
INNER JOIN users u on ua.user_id = u.id
WHERE ua.created_at::date BETWEEN :start_date AND :end_date
AND ua.action_type = 2
GROUP BY ua.user_id, u.username, u.uploaded_avatar_id
ORDER BY likes_received DESC
Explicación de la consulta SQL
La consulta funciona de la siguiente manera:
- Parámetros de fecha: La consulta acepta dos parámetros,
:start_datey:end_date, que definen el rango de fechas para el informe. Ambos parámetros de fecha aceptan el formato de fechaYYYY-MM-DD. - Selección de datos: La consulta selecciona los ID de usuario y los nombres de usuario de la tabla
user_actions(ua) y la tablausers(u), que se unen mediante el comandoINNER JOINde SQL bajo la condición de queua.user_idcoincida conu.id. - Filtrado de datos: La cláusula
WHEREse utiliza para filtrar las acciones que se encuentran dentro del rango de fechas especificado y solo considera las acciones del tipowas_liked, que se representa conaction_type = 2. - Agregación: La función
COUNT(*)en combinación con la cláusulaGROUP BYagrupa los resultados poruser_id,usernameyuploaded_avatar_id, y cuenta la cantidad de “me gusta” que ha recibido cada usuario. - Ordenación de resultados: La cláusula
ORDER BYordena los datos agregados de manera descendente segúnlikes_received, de modo que el usuario con la mayor cantidad de “me gusta” recibidos esté en la parte superior del informe.
La consulta produce una lista de usuarios junto con la cantidad de “me gusta” que han recibido en el rango de fechas dado, ordenados de mayor a menor.
Resultados de ejemplo
| usuario | nombre de usuario | me gusta recibidos |
|---|---|---|
| usuario1 | usuario1 | 748 |
| usuario2 | usuario2 | 324 |
| usuario3 | usuario3 | 308 |
| … | … | … |