Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql rails activerecord按某物分组,并为每个分组选择一个最大(列)记录_Sql_Ruby On Rails_Ruby_Arel - Fatal编程技术网

Sql rails activerecord按某物分组,并为每个分组选择一个最大(列)记录

Sql rails activerecord按某物分组,并为每个分组选择一个最大(列)记录,sql,ruby-on-rails,ruby,arel,Sql,Ruby On Rails,Ruby,Arel,我有一个访问表(人员、访问类型、日期等),我想按访问类型和人员分组,然后在每个组中选择最大(日期)的记录。我很确定使用查询代数应该比编写SQL更简单,但似乎无法让它工作。我以为会是这样的: Visit.group(:visit_type, :person).having("date = MAX(date)") 但这并不是从每组中选择一个记录 编辑:啊!经过进一步的调查,结果证明上述方法确实有效!耶 编辑:啊!它可以在sqlite和mySql上工作,但不能在postgres上工作,这与根据标准更

我有一个访问表(人员、访问类型、日期等),我想按访问类型和人员分组,然后在每个组中选择最大(日期)的记录。我很确定使用查询代数应该比编写SQL更简单,但似乎无法让它工作。我以为会是这样的:

Visit.group(:visit_type, :person).having("date = MAX(date)")
但这并不是从每组中选择一个记录

编辑:啊!经过进一步的调查,结果证明上述方法确实有效!耶

编辑:啊!它可以在sqlite和mySql上工作,但不能在postgres上工作,这与根据标准更严格地按函数实现group_有关。嘘,垃圾!这意味着我仍在寻找答案

编辑:我不认为每次在sqlite上都能给出正确的结果。

这样行吗

Visit.joins('LEFT JOIN visits v2 on visits.visit_type = v2.visit_type AND visits.person = v2.person AND visits.date > v2.date')
这样行吗

Visit.joins('LEFT JOIN visits v2 on visits.visit_type = v2.visit_type AND visits.person = v2.person AND visits.date > v2.date')

好的,我现在要说的是:

Visit.all.group_by{|v| [v.visit_type,v.person]}.map{|key, value| value.inject{|memo, visit| memo.date > visit.date ? memo : visit}}

我知道这不漂亮,但今天是我女儿的6岁生日,所以我得走了

好吧,我现在要说的是:

Visit.all.group_by{|v| [v.visit_type,v.person]}.map{|key, value| value.inject{|memo, visit| memo.date > visit.date ? memo : visit}}

我知道这不漂亮,但今天是我女儿的6岁生日,所以我得走了

不知道如何标记为正确,也许我应该删除?建议…这是一个很好的问题/答案,我不提了。我从中学到了一些东西:)参见编辑-不处理postgres,我讨论了错误。仍然在寻找一个优雅的解决方案。你确定不想使用SQL吗?这会很简单。我现在想要任何[优雅的]解决方案!不知道如何标记为正确,也许我应该删除?建议…这是一个很好的问题/答案,我不提了。我从中学到了一些东西:)参见编辑-不处理postgres,我讨论了错误。仍然在寻找一个优雅的解决方案。你确定不想使用SQL吗?这会很简单。我现在想要任何[优雅的]解决方案!不,获取副本,但我有一个使用ruby的解决方案,尽管它有点可怕。不,获取副本,但我有一个使用ruby的解决方案,尽管它有点可怕。