Kullanıcıların bir dizi video izlediğini kaydediyorum. Şimdi her gün video izleyen kullanıcıların sayısını gösteren bir grafik oluşturmaya çalışıyorum.raylar 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 her gün izledim tüm videolar için doğru sonuçlar üretir
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
üretir, ama dediğim gibi ben sadece bir kez her kullanıcı göstermek istiyorum.
istediğim 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
yüzden ne istediğini yapacağını
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')
düşünce olduğunu. Ancak bu, bir karma yerine
'u verir.
Herhangi bir fikrin var mı?
Ben Sen distinct.count(:attribute_name)
kullanabilirsiniz raylar 3.1 ve mysql
- teşekkürler – Edward
http://stackoverflow.com/a/ bakın 4 raylar kullanımdan kaldırılmış ModelName.distinct.count (: attribute_name) kullanmak için çözüm için 19362288/670433 – s2t2
Modelin tüm özelliklerini nasıl döndürürsünüz? –