Tag: sum

ActiveRecord Sum Max连接导致具有多个nil id的数组

与Rails activerecord相同的问题:sum,max和join 除了得到奇怪的结果。 class CustomResumeline < ActiveRecord::Base has_many :resumeline_words end class ResumelineWord < ActiveRecord::Base belongs_to :custom_resumeline end CustomResumeline.joins(:resumeline_words).where(resumeline_words: {name: ["time", "data"]}).select('sum(resumeline_words.weight) as nb_votes').group('resumeline_words.custom_resumeline_id').order('nb_votes ASC') 结果 CustomResumeline Load (0.8ms) SELECT sum(resumeline_words.weight) as nb_votes FROM “custom_resumelines” INNER JOIN “resumeline_words” ON “resumeline_words”.”custom_resumeline_id” = “custom_resumelines”.”id” WHERE “resumeline_words”.”name” IN (‘time’, ‘data’) GROUP BY resumeline_words.custom_resumeline_id ORDER BY nb_votes ASC => #<ActiveRecord::Relation […]

多个左连接 – 怎么样?

我有一个在Heroku运行的Rails应用程序,我正在尝试计算用户的排名(位置)到高分榜。 该应用程序是用户互相下注并且可以开始下注(创建选项)的地方,或者他们可以对已经创建的选项下注(通过下注)。 我有以下SQL,它应该根据他们在Choices和Bets上的总奖金给我一系列用户..但它给了我一些错误的总胜利,我认为问题出在Left Joins中,因为如果我重写SQL到只包含选择或赌注表然后我工作得很好.. 任何有关如何重写SQL以正常工作的指针:) SELECT users.id, sum(COALESCE(bets.profitloss, 0) + COALESCE(choices.profitloss, 0)) as total_pl FROM users LEFT JOIN bets ON bets.user_id = users.id LEFT JOIN choices ON choices.user_id = users.id GROUP BY users.id ORDER BY total_pl DESC 结果: +—————+ | id | total_pl | +—————+ | 1 | 830 | | 4 | 200 | […]

从复杂的Join,Sum和Group查询中调用ActiveRecord友好代码

问题 你好, 我没有运气试图将这个SQL语句分解为ActiveRecord / Rails友好代码,我想学习如何在这种情况下避免使用find_by_sql语句。 场景我有用户在执行操作时创建审核。 每次审核都是特定的audit_activity。 根据score_weight,每个audit_activity值得一定数量的积分。 我需要根据他们累计的audit_activity score_weights找到每个用户的总分。 最终我需要对它们进行排名,这意味着也要对它进行排序。 我的代码这是我的sql和有问题的表的简化版本。 有什么想法吗? 带有完整列名的SQL(为清楚起见) SELECT users.id, u.email, SUM(audit_activity.score_weight) FROM users JOIN audits ON users.id = audits.user_id JOIN audit_activities ON audit_activities.id = audits.audit_activity_id GROUP BY users.id; 模型:用户,审计,AuditActivity 用户字段:id,email class User < ActiveRecord::Base include Clearance::User has_many :audits end 审计字段:id,user_id,audit_activity_id class Audit < ActiveRecord::Base belongs_to :user belongs_to :audit_activity […]

一次通话中多个日期范围的总和?

我有以下查询: SELECT SUM(“balance_transactions”.”fee”) AS sum_id FROM “balance_transactions” JOIN charges ON balance_transactions.source = charges.balance_id WHERE “balance_transactions”.”account_id” = 6 AND (balance_transactions.type = ‘charge’ AND charges.refunded = false AND charges.invoice IS NOT NULL) AND (“balance_transactions”.”created” BETWEEN ‘2013-12-20’ AND ‘2014-01-19’); 这样做会增加这两个日期之间发生的所有“费用”。 大。 工作良好。 问题是我几乎总是需要一次数百个日期范围的费用,这相当于我运行相同的查询数百次。 效率不高。 但有没有办法将其压缩为所有日期范围的单个查询? 例如,我将调用SUM作为一系列范围,如下所示: 2013-12-20 to 2014-01-19 2013-12-21 to 2014-01-20 2013-12-22 to 2014-01-21 2013-12-23 to 2014-01-22 […]

在rails 3中的多个列上按+总和

我需要得到一个按照我在DB中为这些位置的图片数量排序的位置列表,这是我的查询 Location.select(:city).group(:city).order(“SUM(images_count) DESC”).sum(:images_count) 这很像一个魅力,不幸的是,我现在需要添加省和国家,以防止出现歧义,所以我现在有这个 Location.select(:city, :province, :country).group(:city, :province, :country).order(“SUM(images_count) DESC”).sum(:images_count) 这不起作用:( 有人可以帮我解决这个问题吗?

ruby:当总和为21时,添加数字并打印为true

这是rubeque.com上给出的一个简单问题:编写一个接受任意数量整数的方法,如果总和为21,则将它们添加为true。否则返回False。 它测试输入: assert_equal twenty_one?(3, 4, 5, 6, 3), true assert_equal twenty_one?(3, 11, 10), false 这是我到目前为止所拥有的: def twenty_one?(*nums) nums.inject(&:+) end if twenty_one? == 21 puts true else false end 但我收到错误消息: RuntimeError: The value ’21’ does not equal ‘true’. 我真的很困惑如何解决这个问题。 是否可以将if / else语句放在方法中? 如果这个问题非常基本,那就很抱歉。 我是编程新手。

在Ruby中查找2D数组的总和

我有一个二维数组的数组。 我想创建一个新的二维数组,它在2D数组中找到这些值的总和。 新数组的x,y之和= x时的和,arr1的y + x的总和,arr2的y … |1,2,4| |1,1,1| |1,1,1| |2,4,6| |1,1,1| |1,1,1| |2,4,6| |1,1,1| |1,1,1| |2,4,6| |1,1,1| |1,1,1| 现在添加上面的二维数组将导致, |3,4,6| |4,6,8| |4,6,8| |4,6,8| 如何在Ruby中实现这一点(不是在任何其他语言中)。 我写了一个方法,但看起来很长很难看。