Помогите с SQL запросом. Групировка по месяцам.
11416 сообщений
#10 лет назад
Столкнулся с непосильной задачей, хотя вроде и вполне тривиальной.Не подскажете как правильно сделать?
Есть табличка с денежными операциями:
id - int(11)
op_date - int(11) - дата операции
op_sum - float - сумма, на которую была совершена операция
Мне надо вывести табличку по месяцам и денежную сумму, которая была проведена в каждом месяце, т.е.:
11.2013 - 100000.00
12.2013 - 200000.00
01.2014 - 300000.00
02.2014 - 400000.00
Пробую делать что-то типа:
SELECT DATE_FORMAT(op_date, '%m.%Y') as odate, sum(op_sum) FROM `table` GROUP BY odate
Но что-то не совсем понятно как это работает, причем не правильно работает, выдается что-то вроде того, что на скрине. Нулевой месяц какой-то, суммы совершенно не правильные и нет некоторых месяцев. В общем полный бардак.
Подскажите пожалуйста как лучше решить подобную задачу и что б не сильно тормозило?
Приложения:
6863 сообщения
#10 лет назад
С функциями типа DATE_FORMAT вообще боюсь работать. Странные они, по какому-то своему феншую действуют. Можно дамп таблицы, чтоб поколдовать?
11416 сообщений
#10 лет назад
Дамп к сожалению дать не могу, проект рабочий, а вот совету буду очень рад в какую сторону копать)
39 сообщений
#10 лет назад
В общем-то всё верно. NULL в датах, потому что где-то неправильные timestampы. Да и суммы должны быть нормальные, если их обрезать до 2 знаков после запятой.
6863 сообщения
#10 лет назад
mrGracer, неа, суммы были косячные из-за неправильного преобразования дат - группа получалась не за месяц, а за фиг знает шо ))
11416 сообщений
#10 лет назад
Спасибо floppox за решение проблемы, нужно было всего-то добавить в запрос FROM_UNIXTIME. Очень выручила)))