PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

GROUP BY und COUNT mit ActiveRecord

Distinct und Group By werden Ihnen unterschiedliche Ergebnisse liefern. Um die erwarteten Ergebnisse zu erhalten, sollten Sie

verwenden
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} 

Wie oben zu sehen, gibt die Gruppe die Dinge als Hash zurück. Während „distinct“ nur die Anzahl der Personen insgesamt zurückgibt, siehe unten.

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