PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

GROUP BY et COUNT en utilisant ActiveRecord

Distinct et Group By vont vous donner des résultats différents. Pour obtenir les résultats que vous attendez, vous voudrez utiliser

Person.group(:name).count
(1.2ms)  SELECT COUNT(*) AS count_all, name AS name FROM "people" GROUP BY "people"."name"
=> {"Dan"=>3, "Dave"=>2, "Vic"=>1} 

Vu ci-dessus, le groupe renverra les choses sous forme de hachage. Bien que distinct renvoie simplement le nombre de personnes au total, voir ci-dessous.

Person.distinct(:name).count
(0.4ms)  SELECT DISTINCT COUNT(DISTINCT "people"."id") FROM "people"
=> 6