Как выполнять сортировку в SQL?
Используй CASE:
select status,
          case
            when status = 0 then
               0
            else
              1
          end as status_tmp ,
          updated_at
  from твоя_таблица t
order by status_tmp , updated_at desc
Cинтаксис может быть не совсем верен, т.к. использую Oracle, но CASE знаю есть и в PostgreSQL. А проверки на кол-во строк и действия, последующие за ними, лучше реализовывать в хранимой процедуре.
ORDER BY status,  upadted_at - не прокатит?