我设计了
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]"}
任何人都在这里提出有关如何使用这两个聚合函数的建议。或执行此操作的任何干净方法?