Вы можете включить user.name
в group by
:
SELECT "transaction"."user_id",
"user"."name",
COUNT(transaction.id) trans_count
FROM transaction
inner join "users" on "users"."id" = "transaction"."user_id"
GROUP BY "transaction"."user_id", "user"."name"
В противном случае, когда СУБД пытается объединить (group
) несколько строк в одну строку, она не знает, какая Значение name
должно быть выбрано, поэтому выдает ошибку.
В этом случае user_id
и user.name
имеют отображение один-к-одному, поэтому вы можете просто включить name
в предложение group by
.
В противном случае вы ' я должен сказать СУБД, как выбрать одно значение из нескольких записей в каждой группе, например:
min(user.name)
или max(user.name)
SELECT "transaction"."user_id",
min("user"."name") user_name,
COUNT(transaction.id) trans_count
FROM transaction
inner join "users" on "users"."id" = "transaction"."user_id"
GROUP BY "transaction"."user_id"