group_by中的片段插值var

问题描述 投票:0回答:1

我正在尝试以下操作:

query =
  from s in State,
    group_by:
      fragment("date_part(?, ?)", ^group, s.timestamp_start),
    select:
      {fragment("date_part(?, ?)", ^group, s.timestamp_start), count(s.id)}
Repo.all(query)

group可能是['minute''hour''day']之一。

但是,出现以下错误:

错误42803(grouping_error)列“ s0.timestamp_start”必须出现在GROUP BY子句中或在聚合函数中使用]]

但是如果我在s.timestamp_start子句中添加group_by,则不会得到预期的结果,因为日期是按timestamp_start分组的,而不是按定义的部分分组的。

[我如何做到这一点而不必为每个group可能性指定查询(在fragment内部传递文字值)?

[我正在尝试以下操作:查询=来自州内的s,group_by:fragment(“ date_part(?,?)”,^ group,s.timestamp_start),选择:{fragment(“ date_part(?,?)” ,^ group,s ....

sql postgresql elixir ecto
1个回答
0
投票

您应命名该片段,并在group_by子句中使用此名称。如下所示应该可以工作。

© www.soinside.com 2019 - 2024. All rights reserved.