次の構造を持つテーブルがあります:
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で過去7日間の1日あたりのレコード数をカウントし、これを整数として返す方法を知りたいです。
現在、次のSQLクエリが記述されています。
SELECT *
FROM Responses
WHERE DateAdded >= dateadd(day, datediff(day, 0, GetDate()) - 7, 0)
RETURN
ただし、これは過去7日間のすべてのエントリのみを返します。過去7日間の1日あたりのレコード数をカウントするにはどうすればよいですか?
select DateAdded, count(CustID)
from Responses
WHERE DateAdded >=dateadd(day,datediff(day,0,GetDate())- 7,0)
GROUP BY DateAdded
select DateAdded, count(CustID)
from tbl
group by DateAdded
約7日間の間隔、DBに依存する質問
SELECT DateAdded, COUNT(1) AS NUMBERADDBYDAY
FROM Responses
WHERE DateAdded >= dateadd(day,datediff(day,0,GetDate())- 7,0)
GROUP BY DateAdded
SELECT count(*), dateadded FROM Responses
WHERE DateAdded >=dateadd(day,datediff(day,0,GetDate())- 7,0)
group by dateadded
RETURN
これにより、dateaddedの各値のレコード数が得られます。選択にさらに列を追加するというミスを犯さないでください。1日に1カウントしか得られません。 group by句は、リストされた列の一意のインスタンスごとに行を提供します。
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
タイムスタンプに日付だけでなく時刻が含まれる場合は、次を使用します。
SELECT DATE_FORMAT('timestamp', '%Y-%m-%d') AS date, COUNT(id) AS count FROM table GROUP BY DATE_FORMAT('timestamp', '%Y-%m-%d')
これを試すこともできます:
SELECT DISTINCT(DATE(dateadded))AS unique_date、COUNT(*)AS amount FROM table GROUP BY unique_date ORDER BY unique_date ASC