繁体   English   中英

按ActiveRecord范围中WHERE子句中使用的SQL计数排序

[英]Sort by SQL Count Used in WHERE Clause in ActiveRecord Scope

我试图获取在作用域声明“ where”子句传递期间使用的计算列,以便随后在返回的集合中使用它。 我已经尝试了许多不同的方法,但是都没有用。 最终,我要完成的工作是按该计数对返回的集合进行排序。 到目前为止,这是我的范围:

scope :used_in_past, ->(days_ago) {
    where('(SELECT count(*) as total_tasks FROM grouptask WHERE creatorstudentid = sid AND creationdate > ?) > 0', Date.today-days_ago)
}

我想要“ ORDER BY” total_tasks,并希望将其传递给视图。 每当我尝试使用该命名列时,它只是说它不存在。

也许您可以在SQL语句中使用Alias或Function来做到这一点

SELECT COUNT(sid) AS total_tasks 
FROM grouptask
WHERE creatorstudentid = sid AND creationdate>0
GROUP BY sid
ORDER BY COUNT(sid);

如果您使用的是聚合函数,我在您的陈述中没有看到GROUP BY部分,也许您需要

我希望这个答案可以帮助您

问候

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM