Você pode usar
distinct.count(:attribute_name)
. (No Rails 3 use:
count(:user_id, distinct: true)
em vez de) Desta forma:
UserVideoWatching.where("created_at >= ? AND user_id != ?", 1.month.ago, User.elephant.id)
.group("DATE(created_at)").reorder('created_at').distinct.count(:user_id)
Não é possível testar, mas acho que isso produzirá o SQL que você procura.