2016-05-26 2 views
0

私は過去3ヶ月間のすべての評価を集計したいと考えています。 @Jarlhコメントで述べたようなので、これはあなたが戻って2ヶ月カウント2 50 背中一ヶ月カウント2 100今月 のためにカウント1 50のような独立した単一のクエリで過去3か月のデータを別々に取得するにはどうすればよいですか?

として、現在および以前の2ヶ月間

SELECT Count(AssessmentID) 
from AssessmentListing 
WHERE (STR_TO_DATE(`AssessmentSubmittedDatetime`, '%d-%b-%Y %I:%i %p') >= 
      DATE_FORMAT(NOW(), '%Y')) 
+0

でグループを追加します。 month()を使用します。 – jarlh

+0

@jarlh月間にグループを追加すると言っていることを説明してください。私は月の列を持たない –

+0

そして、私はよくそのことを知らない。何とかあなたはAssessmentSubmittedDatetime列から月の部分を抽出する必要があります。 – jarlh

答えて

0

日付を文字列として保存しないでください。あなたは現在の月たいと2ヶ月前ならば、このような何か:

SELECT DATE_FORMAT(STR_TO_DATE(`AssessmentSubmittedDatetime`, '%d-%b-%Y %I:%i %p'), '%Y-%m') as yyyymm, 
     Count(*) 
from AssessmentListing 
WHERE STR_TO_DATE(`AssessmentSubmittedDatetime`, '%d-%b-%Y %I:%i %p') >= DATE_SUB(DATE_SUB(CURDATE(), INTERVAL 1 - DAY(CURDATE()), INTERVAL 2 MONTH) 
GROUP BY yyyymm; 

は、私はあなたのWHERE句が実際に何をするかわかりません。しかし、文字列と日付を比較するのはおそらくあなたが本当に望むものではありません。

0

を数える必要がありますExtract関数を使用して日付列から月を抽出し、それを使用して結果をグループ化することができます。

select EXTRACT(MONTH FROM AssessmentSubmittedDatetime) as _month, 
     Count(AssessmentID) 
from AssessmentListing 
WHERE (STR_TO_DATE(`AssessmentSubmittedDatetime`, '%d-%b-%Y %I:%i %p') >= 
      DATE_FORMAT(NOW(), '%Y')) 
group by _month 
+0

ですが、これは合計カウント数が別々に表示されていません –

+0

@DilshadAliは_monthの値を取得しますか? – Sachu

+0

日付の値の列が日付のデータ型でない場合 – Sachu

関連する問題