sql >> Base de Datos >  >> RDS >> PostgreSQL

GROUP BY y COUNT usando ActiveRecord

Distinct y Group By te van a dar resultados diferentes. Para obtener los resultados que espera, querrá usar

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} 

Visto arriba, el grupo devolverá las cosas como hash. Mientras que distinto solo devuelve el número de personas en total, como se ve a continuación.

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