Maison  >  Article  >  développement back-end  >  Agrégation imbriquée dans la requête Ent

Agrégation imbriquée dans la requête Ent

PHPz
PHPzavant
2024-02-09 09:36:201092parcourir

Ent 查询中的嵌套聚合

Éditeur PHP Apple vous présentera « Agrégation imbriquée dans la requête Ent » dans cet article. Dans le domaine des requêtes et de l'analyse de données, l'agrégation imbriquée est une technique puissante qui peut effectuer plusieurs niveaux d'opérations d'agrégation dans une seule requête. En utilisant des agrégations imbriquées, nous pouvons effectuer une analyse approfondie des données de manière plus flexible et obtenir des résultats plus précis. Cet article expliquera en détail ce qu'est l'agrégation imbriquée et comment implémenter des opérations d'agrégation imbriquées dans le framework Ent pour aider les lecteurs à mieux comprendre et appliquer cette technologie.

Contenu de la question

Comment écrire cette simple instruction SQL en utilisant le code généré par ent ?

select max(t.sum_score) from
                             (select sum(score) as "sum_score"
                              from matches
                              group by team) as t

J'ai essayé d'utiliser les indicateurs de fonctionnalité du modificateur SQL personnalisés décrits ici, mais je ne sais pas comment accéder au champ sum_score depuis l'extérieur du modificateur.

Solution

Voici la réponse du propriétaire du projet ent a8m (Merci !)

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)

Vous pouvez trouver la réponse complète icisur le référentiel officiel github. J'ai dû ajouter sql.desc(as) pour obtenir la valeur maximale.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer