SQL: seleccione registros distintos en un campo con los registros más altos de otro campo

En un escenario donde tengo una tabla como esta:

int id (PK)
int staff_id
int skill_id
bit mainskill

Quiero seleccionar solo UN registro para cada miembro del personal (representado por staff_id) y enumerar sus habilidades principales representadas por un (1) en habilidades principales. Si no hay ninguna habilidad principal presente, quiero devolver cualquiera de los registros de habilidades para ese miembro del personal. Por ejemplo:

id   staff_id   skill_id   mainskill
1    1          24         1
2    1          55         0
3    1          7          0
4    4          24         0
5    4          18         0
6    6          3          0
7    6          18         1

La consulta debe devolver:

id   staff_id   skill_id   mainskill
1    1          24         1
4    4          24         0
7    6          18         1

He intentado varias combinaciones de agrupación, DISTINCT, etc. pero no puedo obtener la salida que estoy buscando. Cualquier ayuda apreciada.

Respuestas a la pregunta(4)

Su respuesta a la pregunta