Вложенная агрегация в Ent Query
Как я могу написать этот простой оператор SQL, используя код, сгенерированный Ent?
select max(t.sum_score) from
(select sum(score) as "sum_score"
from matches
group by team) as t
Я пытался использовать флаг функции «Пользовательские модификаторы SQL», как описано здесь , но не могу понять, как получить доступ кsum_score
поле вне модификатора.
1 ответ
Это ответ a8m владельца Ent Project (спасибо!)
client.Match.Query().
Aggregate(func(s *sql.Selector) string {
const as = "max_score"
s.GroupBy(match.FieldTeam).OrderBy(sql.Desc(as)).Limit(1)
return sql.As(sql.Sum(match.FieldScore), as)
}).
IntX(ctx)
Полный ответ вы можете найти здесь , в официальном репозитории GitHub. мне пришлось добавитьsql.Desc(as)
чтобы получить максимальное значение.