Ecto查询在datetime字段上执行group_by MONTH并返回元组列表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ecto查询在datetime字段上执行group_by MONTH并返回元组列表相关的知识,希望对你有一定的参考价值。
答案
只是从问题的评论中移植这个。
query
|> group_by([e], fragment("date_part('month', ?)", e.inserted_at))
|> select([e], {fragment("date_part('month', ?)", e.inserted_at), count(e.id)})
|> Repo.all
另一答案
找到答案:
query
|> group_by([e], fragment("date_part('month', ?)", e.inserted_at))
|> select([e], {fragment("date_part('month', ?)", e.inserted_at), count(e.id)})
|> Repo.all
另一答案
也许更清楚一些。
query = from u in User,
group_by: fragment("date_part('month', ?)", u.inserted_at),
select: {fragment("date_part('month', ?)", u.inserted_at), count(u.id)}
Repo.all(query)
另一答案
您也可以像这样命名片段。
User
|> group_by(fragment("month"))
|> select([u], {fragment("date_part('month', ?) as month", u.inserted_at), count(u.id)})
|> Repo.all()
另一答案
我正在使用它,因为我得到浮点返回值(比如.6.0而不是6)
User
|> group_by(fragment("month"))
|> select([u], {fragment("date_part('month', ?)::int as month", u.inserted_at), count(u.id)})
|> Repo.all()
以上是关于Ecto查询在datetime字段上执行group_by MONTH并返回元组列表的主要内容,如果未能解决你的问题,请参考以下文章
sqlAlchemy 按DateTime字段的年或月进行group_by查询