2012-02-10 446 views
14

我有一個表結構如下:如何統計每天的記錄數?

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 

我想知道我怎麼能算的,每天記錄的數目,在過去的7天SQL,然後返回這是一個整數。

目前我有以下SQL查詢寫成:

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

RETURN 

然而,這只是返回過去7天的所有條目。如何計算過去7天內的每日記錄?

+0

GROUP BY DateAdded。那是MSSQL嗎? – 2012-02-10 15:11:18

+0

@BrunoCosta是SQLServer上的MSSQL – HGomez90 2012-02-10 15:13:00

回答

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

謝謝。更直接的回答,因此被接受。 – HGomez90 2012-02-10 15:25:17

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

約7天的間隔是DB-根據問題

+0

這也適用。謝謝 – HGomez90 2012-02-10 15:24:53

+1

@Rupert這是你應該使用的一個。如果您使用腳本語言自動執行查詢,則可以使用SQL的'TO_CHAR'函數創建可比較的日期(這對於時間戳字段尤其重要)。 – Edwin 2012-02-10 15:53:22

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

RETURN 

這會給你的記錄數爲每個dateadded值。不要在添加更多列的錯誤,期望每天只得到一個計數。 group by子句將爲您列出的每個唯一實例列提供一行。

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

你也可以試試這個:

SELECT DISTINCT(DATE(dateadded))AS unique_date,COUNT(*)AS量 FROM表 GROUP BY unique_date ORDER BY unique_date ASC