Вам нужно будет начать с изменения запроса, чтобы получить среднюю оценку за месяц, а не среднюю оценку для «администратора», как сейчас. Я не знаю имя столбца в вашей базе данных, в котором есть даты, но допустим, что он называется «MyDateColumn».
Чтобы получить среднемесячное значение, вам потребуется запрос, подобный следующему:
$query = 'SELECT DATE_FORMAT(MyDateColumn, "%m-%Y") AS theMonth, AVG(rating) AS avgRating ';
$query .= 'FROM tblticketreplies ';
$query .= 'GROUP BY DATE_FORMAT(MyDateColumn, "%m-%Y") ';
$query .= 'ORDER BY avgRating ASC';
Функция DATE_FORMAT - это то, что обеспечивает магию. Он форматирует «MyDateColumn» как MM-YYYY (например, «06 -2011»). Используйте тот же формат в GROUP BY для завершения запроса.
Измените часть кода setTitle
, чтобы пометить новые данные, поступающие из вашего запроса:
$graph->setTitle("Average Support Ticket Ratings per Month");
Кроме того, обратите внимание, что я удалил предложение WHERE из вашего запроса. До этого исключалось «ticketreplies» с пустым «admin» или пустым рейтингом. Вы должны оценить возможность добавления этого обратно в запрос в зависимости от того, какие данные вы хотите включить в свой график.
Надеюсь, это полезно.
~~
Edit:
Обращаясь к комментариям ниже - запрос выше сортируется по avgRating
, поэтому ваш график всегда будет переходить от низкого к высокому значению рейтинга. Для перехода с самого раннего месяца на последний, обновите ORDER BY
. Используйте ORDER BY DATE_FORMAT(MyDateColumn, "%Y-%m")
. %Y-%m
здесь перевернут, чтобы обеспечить правильную сортировку. Год - самый важный элемент здесь, поэтому он идет первым. Менее значимый элемент месяца идет последним.
И, наконец, чтобы ограничить график только текущим пользователем, добавьте предложение WHERE
между предложением FROM
и предложением GROUP BY
. Использование: WHERE YEAR(MyDateColumn) = YEAR(CURDATE())
Это предписывает MySQL рассматривать элементы из вашей таблицы только тогда, когда год даты в MyDateColumn
совпадает с годом текущей даты.
Дайте функции даты и времени MySQL обзор. Вы поблагодарите себя позже. =)