MySQL Query для получения графика эволюции платежей за последние 12 месяцев - PullRequest
1 голос
/ 06 июля 2011

Мое приложение хранит платежи, сделанные клиентами. В конце каждого месяца рассчитывается общая сумма, выплаченная за этот месяц, и передается владельцу: у меня есть таблица платежей, в которой есть следующие поля (наиболее важные).

id, дата выплаты, дата окончания (фактическая дата закрытия месяца), сумма, тип, код, ...

Теперь, когда у меня год платежей, меня попросили создать график динамики платежей (итоги) за последние 12 месяцев.

Читая и т. Д., Это запрос, который я получил, , но я не знаю, как получить итоговые данные за последние 12 месяцев (и получить 0, если в этом месяце не было сделано никаких платежей) ..

    SELECT id, endingdate, datepaid, SUM(ammount) AS total
    FROM `sis_payments` 
    WHERE endingdate >= DATE_SUB( CURDATE( ) , INTERVAL 1 YEAR )
    GROUP BY endingdate

Я знаю, что это может быть плохо продумано, но это то, что мне дали ... какие-нибудь подсказки? Спасибо

1 Ответ

1 голос
/ 06 июля 2011

Вы можете попробовать GROUP BY YEAR(endingdate), MONTH(endingdate) или что-то эквивалентное, используя DATE_FORMAT.Посмотрите документацию Mysql для DATE_FORMAT .

. Кроме того, не включайте поля даты (endingdate, datepaid) в предложении SELECT.Вместо этого используйте YEAR(endingdate), MONTH(endingdate), как в GROUP BY.

Получение 0, когда не было платежей, в этом месяце немного сложнее в SQL.Вы можете справиться с этим в PHP после выполнения запроса.

UPDATE

Пример использования DATE_FORMAT:

SELECT 
    DATE_FORMAT(mrendido,'%y-%m') as xyearmonth, 
    SUM(FORMAT(ammountpaid,2)) AS ammtotal 
FROM sis_pyments
WHERE mrendido >= DATE_SUB(CURDATE(), INTERVAL 1 YEAR) 
GROUP BY xyearmonth 
ORDER BY xyearmonth ASC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...