2012-02-10 39 views
14

Tôi có một bảng trong một với cấu trúc sau:Cách đếm số lượng hồ sơ mỗi ngày?

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 

Tôi muốn biết làm thế nào tôi có thể đếm số lượng hồ sơ mỗi ngày, trong 7 ngày cuối cùng trong SQL và sau đó trở về này là một số nguyên .

Hiện nay tôi đã truy vấn SQL sau đây viết:

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

RETURN 

Tuy nhiên chỉ này trả về tất cả các mục trong 7 ngày qua. Làm thế nào tôi có thể đếm các bản ghi mỗi ngày trong 7 ngày qua?

+0

GROUP BY DateAdded. Đó có phải là MSSQL không? –

+0

@BrunoCosta Có MSSQL trên SQLServer – HGomez90

Trả lời

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

Cảm ơn. Câu trả lời trực tiếp hơn để nó được chấp nhận. – HGomez90

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

khoảng 7-ngày khoảng đó là DB-tuỳ câu hỏi

+0

Điều này cũng hoạt động. Cảm ơn – HGomez90

+1

@Rupert Đây là ứng dụng bạn nên sử dụng. Nếu bạn đang sử dụng ngôn ngữ kịch bản để tự động thực hiện truy vấn, bạn có thể sử dụng hàm 'TO_CHAR' của SQL để tạo các ngày có thể so sánh (đặc biệt có liên quan khi nói đến các trường dấu thời gian). – Edwin

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

RETURN 

này sẽ cung cấp cho bạn một số các bản ghi cho mỗi giá trị dateadded. Đừng phạm sai lầm khi thêm nhiều cột vào lựa chọn, mong đợi chỉ nhận được một lần mỗi ngày. Nhóm theo mệnh đề sẽ cho bạn một hàng cho mỗi trường hợp duy nhất của các cột được liệt kê.

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

bạn cũng có thể thử điều này:

SELECT DISTINCT (DATE (dateadded)) AS unique_date, COUNT (*) AS lượng FROM tên_bảng GROUP BY unique_date ORDER BY unique_date ASC

Các vấn đề liên quan