Heim >Backend-Entwicklung >Golang >Verschachtelte Aggregation in der Ent-Abfrage

Verschachtelte Aggregation in der Ent-Abfrage

PHPz
PHPznach vorne
2024-02-09 09:36:201160Durchsuche

Ent 查询中的嵌套聚合

PHP-Editor Apple stellt Ihnen in diesem Artikel „Nested Aggregation in Ent Query“ vor. Bei der Datenabfrage und -analyse ist die verschachtelte Aggregation eine leistungsstarke Technik, mit der mehrere Ebenen von Aggregationsvorgängen in einer einzigen Abfrage ausgeführt werden können. Durch die Verwendung verschachtelter Aggregationen können wir eingehende Datenanalysen flexibler durchführen und genauere Ergebnisse erzielen. In diesem Artikel wird ausführlich erläutert, was verschachtelte Aggregation ist und wie verschachtelte Aggregationsvorgänge im Ent-Framework implementiert werden, um den Lesern zu helfen, diese Technologie besser zu verstehen und anzuwenden.

Frageninhalt

Wie schreibe ich diese einfache SQL-Anweisung mit dem von ent generierten Code?

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

Ich habe versucht, die hier beschriebenen Funktionsflags für benutzerdefinierte SQL-Modifikatoren zu verwenden, weiß aber nicht, wie ich von außerhalb des Modifikators auf das Feld sum_score zugreifen kann.

Lösung

Dies ist die Antwort des HNO-Projektinhabers a8m (Vielen Dank!)

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)

Die vollständige Antwort finden Sie hierim offiziellen Github-Repository. Ich musste sql.desc(as) hinzufügen, um den Maximalwert zu erhalten.

Das obige ist der detaillierte Inhalt vonVerschachtelte Aggregation in der Ent-Abfrage. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen