查询从来都不是我的强项。我正在尝试修改当前查询以允许按 ASC/DESC 排序。
为此,我有一个模型活动,它扩展到共享,扫描,查看,兑换(可通过Activity.type访问)。
我当前的查询是
results=Activity.select("*, count(*) as count").where(created_at: date_from..date_to).group(:user_id).having("count > 0").count("type='#{val}', count(*) #{desc/asc}")
这给了我这样的东西:
{2=>1, 3=>1, 1=>305, 111=>99, 110=>98, 109=>97, 108=>96, 107=>95, 106=>94, 105=>93,...
这里的问题是,前 2 个有 (type=#{val}).count
= 0。这意味着它们下面有活动记录,但它们的类型不同。是否有任何方法可以修改查询以使这些 .count=0 实际上尊重排序?
否则,作为解决方法,我可以手动将所有这些添加到数组中,然后最后评估它们。
已编辑:已更新到我当前的问题
你试过这个吗:
results=Activity.select("*, count(*) as count")
.where(created_at: date_from..date_to).group(:user_id, :type)
.having("count > 0").order("type ASC, count(*) DESC")