如何在Rails

时间:2018-01-17 08:27:44

标签: sql ruby-on-rails

我需要创建一个图表来显示关闭各种交易需要多长时间。交易达成交易所需的时间由交易的created_at和closed_at时间戳计算得出。

我希望将交易分为两个时间段:交易时间为0到30天,交易时间为31天到60天。

即。我想要像这样的哈希{" 1-30" => 5," 31-60" => 10}其中值是该年龄段的交易数量。

由于我的模型没有days_old列,因此在进行分组时我需要使用Postgres来计算。

我已尝试过以下操作,但我收到以下错误消息。任何人都可以指出我哪里错了吗?我确定CASE语法是正确的。

sql = <<~SQL
  count(*),
  CASE
    WHEN ABS( DATE_PART('day', created_at - closed_at) ) BETWEEN 0 AND 30 THEN '0-30'
    WHEN ABS( DATE_PART('day', created_at - closed_at) ) BETWEEN 31 AND 60 THEN '31-60'
  END AS day_range
SQL

Deal.select(sql).group(:day_range).count

ActiveRecord::StatementInvalid: PG::SyntaxError: ERROR:  syntax error at or near "AS"
LINE 6: END AS day_range

1 个答案:

答案 0 :(得分:1)

最后你不需要count,你应该这样查询

Deal.select(sql).group(:day_range)

查看here

中的示例结果