Я использую PostgreSQL. Я застрял в построении запроса. Как мы можем искать результат, отдавая приоритет данным и отбрасывая остальные данные, если какой-либо из приоритетов соответствует случаям?
Группировка по семьям
Если у одного человека в семье есть уровень приверженности «ИЗБИРАТЕЛЬ», то его следует выбирать, а не другого человека в той же семье, чей статус отличается, например «УТВЕРЖДЕН», «ПОВТОРИТЬ» или «НЕЙТРАЛЬНО»
Если у одного человека в семье есть уровень обязательств «УТВЕРЖДЕНО», то его следует выбрать, а не у другого человека в той же семье, чей статус отличается, например, «ПЕРЕХОД» или «НЕЙТРАЛЬНО»
Эта иерархия выглядит следующим образом: «ИЗБИРАТЕЛЬ», «СОВЕРШЕНО», «ВЫХОД», «НЕЙТРАЛЬНО».
Если все члены семьи имеют одинаковый уровень приверженности, то должен быть выбран номер мобильного телефона, если не ноль.
Другие отбрасываются
Пример таблицы с данными
ID COMMITTED LEVEL MOBILE NUMBER FAMILY NUMBER
1 VOTER 234828288 1
2 COMMITED 262349911 1
3 COMMITED 924792922 2
4 REACHOUT 82639472 2
5 VOTER 79246826234 3
6 VOTER NULL 3
ВЫХОД: ожидаемый результат
ID COMMITED LEVEL MOBILE NUMBER FAMILY NUMBER
1 VOTER 234828288 1
3 COMMITED 924792922 2
5 VOTER 79246826234 3