Я разработал
query = "SELECT date_format(recorded_at,'%d/%m/%Y %I:%m %p'), JSON_ARRAYARG(contact_id) FROM #{table_name } where id = 123 GROUP BY date_format(recorded_at,'%d/%m/%Y %I:%m %p')"
Приведенный выше запрос предоставляет мне массив contact_ids с датой в качестве ключа. Теперь мне нужно преобразовать этот запрос в активную запись, но агрегаторы не работают.
CampaignOpen.where('campaign_id = ? ', 9891).select("DATE_FORMAT(recorded_at,'%d/%m/%Y %I:%m %p')","JSON_ARRAYAGG(contact_id)" ).group("date_format(recorded_at,'%d/%m/%Y %I:%m %p')").as_json
Теперь date_format и JSON_ARRAYARG не выполняются и дают результаты, подобные этому
[{"id"=>nil, "date_format(recorded_at,'%d/%m/%Y %I:%m %p')"=>"30/05/2016 01:05 PM", "JSON_ARRAYAGG(contact_id)"=>"[24, 1, 1, 1]"}, {"id"=>nil, "date_format(recorded_at,'%d/%m/%Y %I:%m %p')"=>"31/05/2016 08:05 PM", "JSON_ARRAYAGG(contact_id)"=>"[1]"}]
я ожидаю, что
{"30/05/2016 01:05 PM"=>"[24,5,6,7]", "31/05/2016 08:05 PM"=>"[1,3,4,5]"}
У любого есть предложение о том, как мы можем использовать эти две агрегатные функции здесь. Или какой-то чистый подход к этому?