因此,我有一个查询正在尝试构造一个列表attributes
,该列表是表中的列。该查询将按属性列表进行分组,计数,并使用属性列表返回计数。最后一部分是我遇到的困难。现在我有
defmodule ProjectName.Counter do
import Ecto.Query, only: [group_by: 3, select: 3]
def group_and_count(queryable, groups) do
queryable
|> group_by([q], ^groups)
|> select([q], count(q.id))
end
end
我在上下文中这样调用
Track
|> Counter.group_and_count([:album, :artist])
|> Repo.all()
哪一个返回我[1, 5, 4, 2]
是正确的,而不是我希望它返回的内容。我想实际进行查询
SELECT COUNT(*), tracks.album, tracks.artist FROM tracks GROUP BY tracks.album, tracks.artist
将会返回
[[1, "Calypso", "Harry Belafonte"],
[5, "Silk & Soul", "Nina Simone"],
[4, "Hello, Dolly!", "Louis Armstrong"],
[2, "Pure Gold", "Perry Como"]]
如何更改代码以使其正常工作?我找不到在groups
查询中迭代select
的方法。