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.

employee (
  distinct_on: [employee_select_column]
  order_by: [employee_order_by]
): [employee]!

# select column enum type for "employee" table
enum employee_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 {
  employee (
    distinct_on: [department]
    order_by: [
      {department: asc},
      {salary: desc}
    ]
  ) {
    id
    name
    department
    salary
  }
}
query { employee ( distinct_on: [department] order_by: [ {department: asc}, {salary: desc} ] ) { id name department salary } }
{ "data": { "employee": [ { "id": 5, "name": "Kamila", "department": "Engineering", "salary": 4325 }, { "id": 4, "name": "Damien", "department": "Product", "salary": 3124 }, { "id": 7, "name": "Rickard", "department": "Services", "salary": 2223 } ] } }