sql - rails/SQL : Group by and sum each day in the last 2 weeks

标签 sql ruby-on-rails ruby arrays group-by

我正在尝试总结过去两周的每一天。

这段代码:

Invoice.group('date(filled_at)').sum(:lines_price).to_a

返回:

[["2012-12-15", #<BigDecimal:ac40068,'0.19275E4',18(45)>], ["2012-12-17", #<BigDecimal:a759234,'0.764235E3',18(45)>]]

这是正确的,但我需要它返回过去两周的值,即使该值是 0.0

所以结果应该是:

[["2012-12-03", 0.0], ... , ["2012-12-17", #<BigDecimal:a759234,'0.764235E3',18(45)>]]

谢谢。

更新

having("date(filled_at) > ?", Date.today - 14)

解决了过去 14 天的问题。但我仍然不知道如何显示 0.0 值。

最佳答案

您将很难在 SQL 中执行此操作,因为您试图强制数据库返回不存在的值。在 ruby​​ 中执行此操作要容易得多。这是一个简洁的方法:

summary = Invoice.group('date(filled_at)').sum(:lines_price).to_a
past_two_weeks = ((Date.today - 14).. Date.today)

final_result =Hash[*past_two_weeks.map(&:to_s).product([0.0]).flatten].merge Hash[*summary.flatten]

final_result.to_a

关于sql - rails/SQL : Group by and sum each day in the last 2 weeks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13924122/

相关文章:

ruby-on-rails - 具有两个字段的 Rails sort_by 方法,一个按升序排序,一个按降序排序

ruby-on-rails - 在 ruby​​ on rails 中将数组存储在数据库中

ruby-on-rails - Nokogiri 是针对 LibXML 版本 2.9.1 构建的,但已动态加载 2.8.0

sql - ruby rails : Query where date equals another date (ignoring time)

ruby - 为什么要执行相同的测试两次

ruby - 使用 ruby​​ 控制文本模式控制台输出的方法

php - 这个 SQL 查询是安全的吗?

sql - 调用函数时在 "("处或附近出现语法错误

sql - 如何在H2中将时间转换为24小时格式

MYSQL 从每个类别中选择 2 个随机行