首页 > 解决方案 > 按数据库计算的内容分组

问题描述

在将旧的 PHP 应用程序转换为 Rails 应用程序的过程中,我偶然发现了这段 SQL 代码:

select week(datum)+1 as kw, year(datum) as jahr,
count(*) as anzahl,  
sum(dv) as dv 
from forecast
group by kw, jahr
order by jahr, kw;

命名是德语:

我不知道也无法在任何文档中找到如何按kwActiveRecordjahr分组。有可能实现这一点还是我必须使用 SQL 代码?

标签: mysqlruby-on-railsactiverecord

解决方案


你有像 Forecast 这样的模型名称吗?我认为有可能做这样的事情:

Forecast.select(Arel.sql("week(datum)+1 as kw, year(datum) as jahr, count(*) as anzahl, sum(dv) as dv")).group(Arel.sql('kw, jahr')).order(Arel.sql('jahr, kw'))

或者您可以使用 Arel 来构建查询。


推荐阅读