2012-02-14 18 views
2

EndDate(eDate)までのStartDate(sDate)の任意の指定された(ユーザーが選択した)日付範囲のすべての月曜日、火曜日などの合計をカウントします。私の現在のクエリは範囲内のすべての日を表示し、私はそれをそのまま各日から私のテーブル "カウント"をSUMにしたいが、1つのオカレンスとして各曜日の合計を表示する。画像サンプルを使用して、私は私の結果になりたい: 月曜日 - 164 火曜日 - 139 水曜日 - 261 など日付範囲内の日の合計をカウントする

SQL

SELECT areaname,created, SUM(count) as totals FROM reports WHERE created 
between '".$sDate."' AND '".$eDate."' AND area = '".$tArea."' GROUP BY areaname, 
created ORDER BY id ASC 

HTML

foreach ($counts as $row) { ?> 
<tr><td><?php echo date('l',strtotime($row['reports']['created'])); ?></td> 
<?php echo $row[0]['totals']; ?> 
} 

sum of count for days within date range

答えて

1

DATE_FORMAT()関数を使用すると、指定された日付から曜日を指定すると、それをグループ化できます。構文はDATE_FORMAT(date, '%W')です。だから、私はGROUP BYでareanameに残っ

SELECT areaname, 
    DATE_FORMAT(created, '%W') AS weekday, 
    SUM(count) AS totals 
FROM reports 
WHERE created BETWEEN '".$sDate."' AND '".$eDate."' 
    AND area = '".$tArea."' 
GROUP BY areaname, weekday 
ORDER BY id 

注、これはareaname/weekdayの組み合わせ毎に1つの結果を返します。すべてのareanamesの合計を求めたい場合は、GROUP BY句からareanameを削除してください。

+0

パーフェクト。それは素晴らしいことです。ありがとう! – sloga