如何构建唯一值列表并显示其ID数组?

Ben*_*Ben 1 sql postgresql ruby-on-rails ruby-on-rails-4

这段代码是我想要实现的概念的简化版本.实际上我正在使用一个有点复杂的查询结果 - 但我认为这个简单的例子就足够了.

我正在尝试使用其id的数组输出唯一值的有序列表.我不确定是否需要使用一个或两个select语句,或者我是否应该使用一个select语句和一些ruby代码.

数据(人)

id: first: last:
1   Julie  Brown
2   Julie  Brown
3   Mike   Smith
4   Julie  Brown
5   Andrea Smith
6   Mike   Smith
7   Jim    Brown
Run Code Online (Sandbox Code Playgroud)

期望的输出

Jim Brown (7)
Julie Brown (1, 2, 4)
Andrea Smith (5)
Mike Smith (3, 6)
Run Code Online (Sandbox Code Playgroud)

Wiz*_*Ogz 5

@people = Person
  .select(:first, :last, "array_agg(id) AS ids")
  .group(:first, :last)
Run Code Online (Sandbox Code Playgroud)

您可以使用该array_agg函数在单个查询中获取所有ID.

@people.each do |person|
  full_name = [person.first, person.last].join(" ")
  puts "#{ full_name } (#{ person.ids.join(", ") })"
end
Run Code Online (Sandbox Code Playgroud)