gpt4 book ai didi

mysql - 按属性分组并计算记录

转载 作者:行者123 更新时间:2023-11-29 04:24:50 27 4
gpt4 key购买 nike

我需要按名称对查询结果进行分组,并显示每个名称的结果数量。

Controller :

def show
@task = Task.where(:name => params[:name])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @task }
end
end

我需要定义一些输出类似这样的东西:

show.html.erb:

Name | # of Tasks

Alan | 2
Bob | 1

我怎样才能做到这一点?谢谢。

最佳答案

您可以使用 group_by method :

@tasks.group_by(&:name)

# this will output:
{
'Ben' => [<Task id:(...)>],
'Alon' => [<Task id:(...)>, <Task id:(...)>, ...],
#...
}

在您看来,您可以这样使用它:

<% @tasks.group_by(&:name).each do |name, tasks| %>
<tr>
<td><%= name %></td>
<td><%= tasks.size %></td> # the tasks variable is an Array of Tasks
</tr>
<% end %>

更好的方法

您也可以只在一个 SQL 请求中完成:

Task.count(:group => 'name')
# should return a Hash like:
{
'Ben': 2,
'Alon': 5,
# ...
}

在你看来如何使用它?

<% @tasks_count.each do |task_name, task_count| %>
<tr>
<td><%= task_name %></td>
<td><%= task_count %></td>
</tr>
<% end %>

关于mysql - 按属性分组并计算记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13993101/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com