Stratascratch – Solución ID 2004

En este ejercicio de la compañía Meta en PostgreSQL nos solicitan lo siguiente:

Return the total number of comments received for each user in the 30 or less days before 2020-02-10. Don’t output users who haven’t received any comment in the defined time period.

Pero revisemos un poco más a detalle cada punto que debemos cubrir.

El ejercicio te pide que encuentres la cantidad total de comentarios que cada usuario recibió durante un periodo de tiempo específico. Este periodo es de 30 días o menos, justo antes de la fecha del 10 de febrero de 2020.

Imagina que tienes una tabla donde se registran todos los comentarios, incluyendo quién recibió el comentario y cuándo se recibió. El ejercicio te solicita que filtres esa información para considerar únicamente los comentarios que fueron recibidos dentro de los 30 días previos al 10 de febrero de 2020 (es decir, desde aproximadamente el 11 de enero de 2020 hasta el 10 de febrero de 2020).

Una vez que tengas esa lista filtrada de comentarios, necesitas agruparlos por el usuario que los recibió. Finalmente, para cada usuario, debes contar cuántos comentarios recibió en total durante ese periodo de tiempo.

Hay una condición importante: solo debes mostrar en el resultado a los usuarios que realmente recibieron al menos un comentario dentro de ese periodo definido. Si un usuario no recibió ningún comentario en esos días, no debe aparecer en tu resultado final.

En resumen, el resultado esperado es una lista de usuarios (solo aquellos que recibieron comentarios en el periodo especificado) junto con el número total de comentarios que cada uno de ellos recibió durante esos 30 días previos al 10 de febrero de 2020.


Solución

Te invito nuevamente a intentar solucionar el problema por tu cuenta antes de ver el query con el que yo pude resolver la pregunta.

Aquí te presento el query con el que pude resolver la pregunta. Fíjate en cómo cada parte del query se relaciona con los requisitos que analizamos:

SELECT user_id, SUM(number_of_comments)
FROM fb_comments_count
WHERE created_at >= '2020-01-11' AND created_at <= '2020-02-10'
GROUP BY user_id
ORDER BY user_id;
;

Deja un comentario