sintaxis - sql server grouping
GROUP BY y COUNT usando ActiveRecord (1)
Refiriéndose a esto: ¿Hay alguna diferencia entre GROUP BY y DISTINCT?
Given a table that looks like this:
name
------
barry
dave
bill
dave
dave
barry
john
This query:
SELECT name, count(*) AS count FROM table GROUP BY name;
Will produce output like this:
name count
-------------
barry 2
dave 3
bill 1
john 1
¿Cuál es la convención de Rails correcta aquí para que ActiveModel realice un GROUP BY con COUNT?
Distinct
y Group By
van a dar diferentes resultados. Para obtener los resultados que espera, querrá usar
Person.all.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 un hash. Mientras que distintas solo devuelve el número de personas en total, como se ve a continuación.
Person.all.distinct(:name).count
(0.4ms) SELECT DISTINCT COUNT(DISTINCT "people"."id") FROM "people"
=> 6