Desde hace tiempo deseo determinar cuales son los artículos menos leídos del blog. Simplemente por curiosidad. Aunque si comparo únicamente la cantidad de hits (visitas) de cada artículo no obtengo un resultado fiable, ya que los artículos más nuevos aparecen listados como los menos leídos. Esto se debe a que tienen pocos días online (ha pasado poco tiempo desde su publicación). Cuanto más tiempo tenga online un artículo, más visitas acumula. Por lo tanto, para cada artículo, lo mejor es contabilizar la cantidad de visitas dividido la cantidad de días que lleva publicado, lo que daría efectivamente la cantidad promedio de visitas por día.
La tabla de artículos de la base de datos MySQL posee una columna "published", que guarda la fecha de publicación de cada artículo, y una columna "hits", que guarda la cantidad de visitas a cada artículo. Por lo tanto, utilizando una consulta SQL, deseo obtener una columna que contabilice la cantidad de hits dividido la cantidad de días online. Por supuesto no tengo una columna que guarde la cantidad de días que cada artículo lleva online, lo que necesito hacer es restar a la fecha actual la fecha de publicación, y contar la cantidad de días.
Afortunadamente MySQL cuenta con la función TO_DAYS()
la cual, dada una fecha, retorna la cantidad de días desde el año 0. Entonces, si convierto la fecha actual a cantidad de días desde el año 0, y luego le resto la cantidad de días desde el año 0 de la fecha de publicación, obtendré la cantidad de días que cada artículo lleva publicado. El resto es fácil.
En síntesis, la consulta SQL queda así:
SELECT title as 'Artículo', published as 'Publicado', hits as 'Hits totales', to_days(now()) - to_days(published) as 'Días online', hits/(to_days(now()) - to_days(published)) as Hits_por_dia FROM articles as 'Artículos' WHERE hits/(to_days(now()) - to_days(published)) <= 2 ORDER BY Hits_por_dia asc;
Finalmente he agregado la cláusula WHERE
para quedarme sólo con los artículos que tienen dos o menos visitas por día, y he ordenado los resultados de menor a mayor (según el promedio de visitas por día) con la cláusula ORDER BY
.
Estos son los artículos del blog que tienen en promedio menos de dos visitas por día:
¡Espero que les haya gustado!