2012-02-10 308 views
14

Tengo una tabla en una con la siguiente estructura:¿Cómo contar el número de registros por día?

CustID --- DateAdded --- 

396  2012-02-09 
396  2012-02-09 
396  2012-02-08 
396  2012-02-07 
396  2012-02-07 
396  2012-02-07 
396  2012-02-06 
396  2012-02-06 

me gustaría saber cómo puedo contar el número de registros por día, durante los últimos 7 días en SQL y luego regresar esto como un entero .

En la actualidad tengo el siguiente consulta SQL escrito:

SELECT * 
    FROM Responses 
WHERE DateAdded >= dateadd(day, datediff(day, 0, GetDate()) - 7, 0) 

RETURN 

Sin embargo, esto sólo devuelve todas las entradas durante los últimos 7 días. ¿Cómo puedo contar los registros por día durante los últimos 7 días?

+0

GROUP BY FechaAdición. Es ese MSSQL? –

+0

@BrunoCosta Sí MSSQL en SQLServer – HGomez90

Respuesta

20
select DateAdded, count(CustID) 
from Responses 
WHERE DateAdded >=dateadd(day,datediff(day,0,GetDate())- 7,0) 
GROUP BY DateAdded 
+1

Gracias. Más respuesta directa por lo que es aceptado. – HGomez90

5
select DateAdded, count(CustID) 
from tbl 
group by DateAdded 

aproximadamente 7 días de intervalo es cuestión

+0

Esto también funciona. Gracias – HGomez90

+1

@Rupert Este es el que deberías estar usando. Si está utilizando un lenguaje de scripts para autoejecutar la consulta, puede usar la función 'TO_CHAR' de SQL para crear fechas comparables (lo cual es especialmente relevante cuando se trata de campos de marca de tiempo). – Edwin

0
SELECT count(*), dateadded FROM Responses 
WHERE DateAdded >=dateadd(day,datediff(day,0,GetDate())- 7,0) 
group by dateadded 

RETURN 

DB-dependiendo Esto le dará un recuento de registros para cada valor dateadded. No cometa el error de agregar más columnas a la selección, esperando obtener solo una cuenta por día. La cláusula group by le dará una fila para cada instancia única de las columnas enumeradas.

0
select DateAdded, count(DateAdded) as num_records 
from your_table 
WHERE DateAdded >=dateadd(day,datediff(day,0,GetDate())- 7,0) 
group by DateAdded 
order by DateAdded 
3
SELECT DateAdded, COUNT(1) AS NUMBERADDBYDAY 
FROM Responses 
WHERE DateAdded >= dateadd(day,datediff(day,0,GetDate())- 7,0) 
GROUP BY DateAdded 
0

también podría intentar esto:

SELECT DISTINCT (FECHA (dateadded)) AS unique_date, COUNT (*) AS cantidad FROM tabla GROUP BY unique_date ORDER BY unique_date ASC

Cuestiones relacionadas