在日期时间字段和 returns 元组列表上执行 group_by MONTH 的 Ecto 查询
Ecto query that does a group_by MONTH on a datetime field and returns list of tuples
作为 的附带问题:
如何将查询更改为 return 包含月份整数和分组计数的元组列表?所以你的结果看起来像:
[{1, 2}, {2, 2}, {3, 2}, {4,2}]
只是从问题的评论中移植这个。
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()
我正在使用它,因为我得到的是浮点数 return 值(比如 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()
作为
如何将查询更改为 return 包含月份整数和分组计数的元组列表?所以你的结果看起来像:
[{1, 2}, {2, 2}, {3, 2}, {4,2}]
只是从问题的评论中移植这个。
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()
我正在使用它,因为我得到的是浮点数 return 值(比如 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()