我如何收到ruby活动记录的聚合查询?

时间:2009-08-12 07:50:02

标签: ruby activerecord aggregate camping

使用ruby,露营webframework,activerecord-2.1.1,我的数据库结构是......

create_table :Conf_posts do |t|
  %w{title body username posttime hit passwd}.each do |col|
    t.column :"#{col}", :string
    end
end

我想要每个用户名的总和

我有以下代码。

Post.find :all, :select => "username,sum(hit)", :from => "Conf_posts", :group => "username"

我收到了以下结果。只返回了用户名:

[#<Conf::Models::Post username: "\352\260\225\355\230\201">, #<Conf::Models::Post username: "\353\215\225\352\267\234">, #<Conf::Models::Post username: "\353\225\214\355\230\270">, #<Conf::Models::Post username: "\353\263\264\353\236\214">, #<Conf::Models::Post username: "\354\230\201\352\262\275">, #<Conf::Models::Post username: "\354\232\260\353\236\214">, #<Conf::Models::Post username: "\354\235\270\354\204\235">, #<Conf::Models::Post username: "\354\240\225\355\231\224.">, #<Conf::Models::Post username: "\355\230\201\354\235\264">]

我无法同时收到username'hit的用户名和总和

2 个答案:

答案 0 :(得分:5)

Post.sum(:hit, :group => :username)

应该给出一个数组数组,比如

[ ['user1', 42], ['user2', 109], ...

答案 1 :(得分:2)

我发誓: - )

答案是..

Post.sum“hit”,:group =&gt; “用户名”

再见〜