Подсчет итогов за дни в диапазоне дат - PullRequest
2 голосов
/ 14 февраля 2012

Я хочу подсчитать итоги за все понедельники, вторники и т. Д. Для любого заданного (выбранного пользователем) диапазона дат, от StartDate (sDate) до EndDate (eDate).Мой текущий запрос показывает все дни в пределах диапазона, и я хотел бы, чтобы СУММА моей таблицы «подсчитывала» за каждый день, как есть, но отображала общее количество каждого дня недели как одно вхождение.Используя образец изображения, я хочу, чтобы мой результат был: понедельник - 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 Ответ

1 голос
/ 14 февраля 2012

Вы можете использовать функцию DATE_FORMAT () , чтобы получить день недели от заданной даты, затем вы можете сгруппировать по этому. Синтаксис DATE_FORMAT(date, '%W'). Итак:

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 в GROUP BY, так что это будет возвращать один результат для каждой комбинации areaname / weekday. Если вы хотите получить итоговые значения для всех названий арен, просто удалите areaname из предложения GROUP BY.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...