# Select first row for each group in Postgres

Postgres snippet for grabbing the first row in each distinct group by group

Given a table `seasons`:

| id |    team   | points |
| -- | :-------: | -----: |
| 1  | Liverpool |     82 |
| 2  | Liverpool |     84 |
| 3  |  Brighton |     34 |
| 4  |  Brighton |     28 |
| 5  | Liverpool |     79 |

We want to find the rows containing the maximum number of points *per team*.

The expected output we want is:

| id |    team   | points |
| -- | :-------: | -----: |
| 3  |  Brighton |     34 |
| 2  | Liverpool |     84 |

From the [SQL Editor](/dashboard/project/_/sql), you can run a query like:

```sql
select distinct
  on (team) id,
  team,
  points
from
  seasons
order by
  team,
  points desc;
```

The important bits here are:

- The `desc` keyword to order the `points` from highest to lowest.
- The `distinct` keyword that tells Postgres to only return a single row per team.

This query can also be executed via `psql` or any other query editor if you prefer to [connect directly to the database](/docs/guides/database/connecting-to-postgres#direct-connection).
