2012-02-10 16 views
14

私は次のような構造を持つのテーブルがあります:私は、私はSQLの最後の7日間、一日あたりのレコード数をカウントして、整数としてこれを返すことができる方法を知っていただきたいと思い1日あたりのレコード数をカウントするには?

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 

を。

は、現時点では私は、次のSQLクエリが書かれている:

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

RETURN 

しかしこれだけ戻って過去7日間のすべてのエントリ。過去7日間の1日あたりの記録をどのように数えることができますか?

+0

GROUP BY DateAdded。それはMSSQLですか? –

+0

@BrunoCostaはいSQLServerのMSSQL – HGomez90

答えて

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

ありがとうございます。より直接的な答えは受け入れられる。 – HGomez90

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

約7日間隔、それはDB-応じて質問

+0

これも機能します。ありがとう – HGomez90

+1

@Rupertこれはあなたが使用する必要があります。スクリプト言語を使用してクエリを自動実行する場合は、SQLの「TO_CHAR」関数を使用して比較可能な日付を作成することができます(タイムスタンプフィールドの場合は特に関係します)。 – Edwin

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

RETURN 

だこれはあなたの各dateadded値のレコードの数を与えます。選択肢に列を追加するのは間違いではなく、1日に1つのカウントを得ることを期待してください。 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

あなたもこれを試みることができる:

は、DISTINCT(DATE(dateaddedを))SELECTテーブル GROUP FROM量 AS unique_date、COUNT(*)AS BY unique_date ORDER BY unique_date ASC

関連する問題