Nagrywam ile razy użytkownicy oglądają serię filmów. Teraz próbuję utworzyć wykres liczby użytkowników oglądających każdego wideo każdego dnia.szyny COUNT SELECT DISTINCT
UserVideoWatching.where("created_at >= ? AND user_id != ?",1.month.ago, User.elephant.id).group("DATE(created_at)").reorder('created_at').count
produkuje 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
która produkuje poprawne wyniki dla wszystkich filmów oglądanych każdego dnia, ale jak powiedziałem, chcę tylko pokazać każdemu użytkownikowi raz.
SQL Chcę to
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
więc pomyślałem
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')
by robić to, co chciałem. Ale powoduje to raczej niż haszowanie.
Wszelkie pomysły?
używam szyn 3.1 i MySQL
To sposób ładniejszy - dzięki – Edward
przestarzałe w szynach 4 Zobacz http://stackoverflow.com/a/ 19362288/670433 dla rozwiązania, które ma używać ModelName.distinct.count (: nazwa_atrybutu) – s2t2
Jak zwrócisz wszystkie atrybuty modelu? –