Я записываю, сколько раз пользователи просматривают серию видеороликов. Теперь я пытаюсь составить график количества пользователей, которые смотрят видео каждый день.rails COUNT SELECT DISTINCT
UserVideoWatching.where("created_at >= ? AND user_id != ?",1.month.ago, User.elephant.id).group("DATE(created_at)").reorder('created_at').count
производит SQL
SELECT COUNT(*) AS count_all, DATE(created_at) AS date_created_at FROM `user_video_watchings` WHERE (created_at >= '2013-01-27 10:43:24' AND user_id != 7) GROUP BY DATE(created_at) ORDER BY created_at
который производит правильные результаты для всех видео наблюдали каждый день, но, как я сказал, что хочет только показать каждый пользователь один раз.
SQL, я хочу
SELECT COUNT(DISTINCT user_id) AS count_all, DATE(created_at) AS date_created FROM `user_video_watchings` WHERE (created_at >= '2013-01-27 10:33:18' AND user_id != 7) GROUP BY DATE(created_at) ORDER BY created_at
так я думал
UserVideoWatching.where("created_at >= ? AND user_id != ?",1.month.ago, User.elephant.id).group("DATE(created_at)").reorder('created_at').select('COUNT(DISTINCT user_id) AS count_all, DATE(created_at) AS date_created')
будет делать то, что я хотел. Но это дает
[#<UserVideoWatching >, #<UserVideoWatching >]
а не хэш.
Любые идеи?
Я использую рельсы 3.1 и MySQL
Это способ лучше - благодаря – Edward
осуждаются в рельсах 4 см http://stackoverflow.com/a/ 19362288/670433 для решения, которое должно использовать ModelName.distinct.count (: attribute_name) – s2t2
Как вы возвращаете все атрибуты модели? –