Distinct
và Group By
sẽ cho bạn những kết quả khác nhau. Để có được kết quả như mong đợi, bạn sẽ muốn sử dụng
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}
Ở trên, nhóm sẽ trả về mọi thứ dưới dạng băm. Trong khi khác biệt chỉ trả về tổng số người, xem bên dưới.
Person.distinct(:name).count
(0.4ms) SELECT DISTINCT COUNT(DISTINCT "people"."id") FROM "people"
=> 6