[RAILS] [sql]查询获取唯一值的总和

时间:2014-10-28 13:52:27

标签: sql ruby-on-rails activerecord

Rails版本:

  @most_valueable_clients = current_user.clients.find_by_sql("SELECT vorname, nachname, preis FROM clients INNER JOIN treatments on treatments.client_id=clients.id") 

SQL版本:

SELECT  vorname, nachname, preis FROM clients INNER JOIN treatments on treatments.client_id=clients.id WHERE user_id=1; 

在表中生成:

  vorname   |   nachname   | preis 
------------+--------------+-------
 hallo test | in ?         |   500
 hallo test | in ?         |    87
 ljkjölk    | lkjöljkölkjö |    50
 kevin      | marcel       |    50
 Hans       | bla          |    50
 Hans       | bla          |    100

我可以使用distinct来过滤唯一值。 如何创建每个preis(均值)为每个用户汇总的子查询? 我需要总价的独特价值。

预期结果:

具有总计preis(金额)的唯一客户。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

很高兴这对你有用:


您要做的是在SQL中使用group by。对于Rails,试试这个:

current_user.clients.includes(:treatments).group(:vorname, :nachname).sum(:preis)

答案 1 :(得分:0)

试试这个:

current_user.clients.find_by_sql("SELECT vorname, nachname, sum(preis) 
FROM clients INNER JOIN treatments on treatments.client_id=clients.id 
GROUP BY vorname, nachname")
相关问题