Postgres: Distinct query results¶
The distinct_on argument¶
You can fetch rows with only distinct values of a column using the distinct_on
argument.
It is typically recommended to use order_by
along with distinct_on
to ensure we get predictable results
(otherwise any arbitrary row with a distinct value of the column may be returned).
Note that the distinct_on
column needs to be the first column in the order_by
expression.
See sort queries for more info on using order_by
.
employees (
distinct_on: [employees_select_column]
order_by: [employees_order_by]
): [employees]!
# select column enum type for "employees" table
enum employees_select_column {
id
name
department
salary
}
You can see the complete specification of the distinct_on
argument in the API reference.
Fetch results with distinct values of a particular field¶
For example, fetch the employee with the highest salary from each department:
query {
employees (
distinct_on: [department]
order_by: [
{department: asc},
{salary: desc}
]
) {
id
name
department
salary
}
}
query {
employees (
distinct_on: [department]
order_by: [
{department: asc},
{salary: desc}
]
) {
id
name
department
salary
}
}
{
"data": {
"employees": [
{
"id": 5,
"name": "Kamila",
"department": "Engineering",
"salary": 4325
},
{
"id": 4,
"name": "Damien",
"department": "Product",
"salary": 3124
},
{
"id": 7,
"name": "Rickard",
"department": "Services",
"salary": 2223
}
]
}
}