mirror of
https://github.com/ent/ent.git
synced 2026-05-24 09:31:56 +03:00
53 lines
786 B
Markdown
Executable File
53 lines
786 B
Markdown
Executable File
---
|
|
id: aggregate
|
|
title: Aggregation
|
|
---
|
|
|
|
## Group By
|
|
|
|
Group by `name` and `age` fields of all users, and sum their total age.
|
|
|
|
```go
|
|
package main
|
|
|
|
import (
|
|
"context"
|
|
|
|
"<project>/ent"
|
|
"<project>/ent/user"
|
|
)
|
|
|
|
func Do(ctx context.Context, client *ent.Client) {
|
|
var v []struct {
|
|
Name string `json:"name"`
|
|
Age int `json:"age"`
|
|
Sum int `json:"sum"`
|
|
Count int `json:"count"`
|
|
}
|
|
err := client.User.Query().
|
|
GroupBy(user.FieldName, user.FieldAge).
|
|
Aggregate(ent.Count(), ent.Sum(user.FieldAge)).
|
|
Scan(ctx, &v)
|
|
}
|
|
```
|
|
|
|
Group by one field.
|
|
|
|
```go
|
|
package main
|
|
|
|
import (
|
|
"context"
|
|
|
|
"<project>/ent"
|
|
"<project>/ent/user"
|
|
)
|
|
|
|
func Do(ctx context.Context, client *ent.Client) {
|
|
names, err := client.User.
|
|
Query().
|
|
GroupBy(user.FieldName).
|
|
Strings(ctx)
|
|
}
|
|
```
|