Вложенная агрегация в 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)чтобы получить максимальное значение.

Другие вопросы по тегам