2009-03-30 19 views
6

corro una revista en línea y me gustaría una manera sencilla-muertos para rastrear métricas 3:mySQL ¿Query para enumerar el número de comentarios que mi sitio recibió cada día?

  1. ¿Cuántos comentarios se dejan cada día.
  2. Cuantos enlaces envían mis usuarios.
  3. Cuantos nuevos miembros recibo cada día.

Esta información es toda mi base de datos, no estoy seguro de cómo sacarla.

Tengo una tabla de "comentarios" con aproximadamente 3500 comentarios. Cada comentario tiene una fila en la tabla. Una de las columnas en la tabla es "marca de tiempo".

Supongo que hay una consulta que seleccionará esta tabla, clasificará las filas por marca de tiempo, las agrupará en incrementos de 24 horas y luego contará el número de filas en cada grupo, indicándome cuántos nuevos comentarios recibí cada uno día.

¿Cómo sería esa consulta? Creo que puedo descubrir los otros si tuviera el primero en funcionamiento.

+0

¿Qué tipo de columna es la marca de tiempo? ¿Es un TIMESTAMP real, un DATE/DATETIME de algún tipo, o es un INT que almacena una marca de tiempo de Unix? – Powerlord

+0

Es un int (11) que contiene una marca de tiempo Unix. – FGM

Respuesta

7

Este fragmento se muestren los resultados en una mesa temática:

$sq = 'SELECT COUNT(*) cnt, DATE(FROM_UNIXTIME(timestamp)) day ' 
    . 'FROM {comments} c ' 
    . 'GROUP BY 2 ' 
    . 'ORDER BY 2 DESC'; 
$q = db_query($sq); 
$stats = array(); 
while ($o = db_fetch_object($q)) { 
    $stats[$o->day] = array($o->day, $o->cnt); 
} 
return theme('table', NULL, $stats)); 

usando fecha (fecha y hora) no funciona porque está en formato comments.timestamp UNIX_TIMESTAMP, mientras FECHA() espera un archivo ASCII fecha.

0

Utilice la función date_format() para formatear las fechas;

select count(id) as commentCount, date_format(dateColumn, '%Y-%m-%d') as commentDate 
from yourTable 
group by commentDate 
Cuestiones relacionadas