debo decir que la lógica me hace pensar que solo tienes un criterio válido de ordenación, el tiempo sin vacaciones. quizá deberías incluir el criterio de "días de vacaciones acumuladas" en vez del criterio número 1.
ahora partiendo del supuesto que tienes una tabla con el personal y sus datos fijos, crearía otra tabla con los datos de las vacaciones, donde crearía un campo donde registrar la fecha de la última vez que el trabajador tomó vacaciones, cuántos días le quedan de vacaciones. teniendo ese campo crearía un campo de calculo que estime el tiempo sin vacaciones restando la fecha actual menos la fecha de sus últimas vacaciones, con eso obtendrás el resultado en días sin vacaciones, creas un tercer campo de calculo que multiplique esos días sin vacaciones por algún factor según si tiene o no vacaciones acumuladas y luego simplemente puedes realizar una consulta que muestre y ordene a los funcionarios con ese valor, el que tiene el valor más alto es el que tiene más prioridad.
Resumiendo:
Tabla Vacaciones vinculada a rut de trabajador
Campos :
1.-fecha de última vacación tomada (campo de fecha)
2.-días sin vacaciones (campo calculado-auto introducido)
3.-vacaciones acumuladas (número de días pendientes)
4.- factor vacaion acumulada (campo de calculo autointroducido con if : campo 3=0 factor= 1 , campo3 entre 1 y 7 factor= 2 , campo 3 mayor a 7 factor =3 etc etc)
5.- prioridad para tomar vacaciones (campo de calculo ; campo 2 * campo 4)
Espero que te sirva de algo, saludos.