这些是参数:
%{"$select" => %{"$avg" => ["arrive_at"], "$count" => ["arrive_at"]}}
这是代码:
Enum.reduce(select, [], fn {key, value}, fields ->
Enum.reduce(value, fields, fn {k, v}, fields ->
query = from p in model, select: %{}
query = if k == "$avg" do
from p in query, select_merge: %{avg: avg(p.id)}
else
query
end
IO.inspect query
query = if k == "$count" do
from p in query, select_merge: %{count: count(p.pass)}
else
query
end
首先,此代码将运行" $ avg"并且此查询将返回
#Ecto.Query<from m in Model, select: %{avg: avg(m.id)}>
第二次运行&#34; $ count&#34;。由于此代码query = from p in model, select: %{} .
它将再次重置为空的选择地图,而我得到的结果是:
#Ecto.Query<from m in Model, select: %{count: count(m.pass)}>
返回最后一个查询的结果。我想要的是这个:
#Ecto.Query<from h in Model, select: %{avg: avg(h.id), count: count(h.pass)}>
感谢。