Faits :
A.
A.a. A._, né en 1978, est entré en service dans la police genevoise le 1er janvier 1999. En 2014, il a passé avec succès les examens de compétences (ci-après: EC) pour la strate "officier supérieur" et fait depuis lors partie du service "B._". Il occupe depuis 2015 la fonction de sergent-chef au sein du poste de police de V._. Par ailleurs, à compter de 2010, il a intégré le comité de l'Union du personnel du corps de police (ci-après: UPCP).
Le 28 mai 2018, A._ a déposé sa candidature spontanée pour la fonction de sergent-major opérationnel au service C._. Par courriel du 6 juin 2018, il a été informé que sa candidature n'avait pas été retenue, car il ne remplissait pas le prérequis d'avoir réussi les EC pour la strate "officier" (du fait que les EC de 2014 étaient arrivés à échéance). En octobre 2018, il a passé avec succès les EC pour la strate "officier". Le 22 novembre 2018, il a été reçu en entretien d'évaluation et de développement personnel (ci-après: EEDP); comme il avait abordé la question de ses activités syndicales, il lui a été indiqué qu'elles ne présentaient pas d'incompatibilité avec sa mission au sein de la police.
A.b. Lors d'un "entretien de retour" du 5 décembre 2018 relatif à sa candidature à l'un des deux postes de sergent-major opérationnel nouvellement mis au concours, A._ a été informé que celle-ci n'avait pas été retenue. Par courrier du 14 décembre 2018 adressé à la commandante de la police genevoise par l'UPCP, cosigné par A._, l'association a fait valoir que la candidature de ce dernier avait été rejetée en raison de son activité syndicale et, notamment, de "sa vision de la chaîne hiérarchique". L'UPCP demandait la notification d'une décision justifiant des motifs de la non-promotion de A._.
Par courrier du 28 janvier 2019, la commandante a répondu que deux autres candidats, qui avaient suivi le processus de recrutement, avaient été retenus. Outre les excellentes EEDP et leurs qualités de conduite opérationnelle de terrain, les profils de ces deux candidats avaient été jugés en adéquation avec le rôle attendu d'un sergent-major. Cette fonction était le maillon primordial de la chaîne de transmission entre les collaborateurs de la base et la hiérarchie. A._ n'avait pas su démontrer et convaincre qu'il était le meilleur candidat pour ce rôle. Il était dès lors erroné de prétendre que sa non-promotion était en lien avec son activité syndicale.
B.
B.a. A._ a saisi la Chambre administrative de la Cour de justice de la République et canton de Genève (ci-après: la Chambre administrative) en se plaignant d'un déni de justice. Il a conclu principalement au renvoi du dossier au département concerné pour qu'il ouvre une procédure administrative et qu'il rende décision au sens de la loi quant au refus de sa promotion, motifs à l'appui. Subsidiairement, il a conclu à l'annulation de la décision contenue dans le courrier de la commandante de la police du 28 janvier 2019, au constat que le rejet de sa candidature était intervenu en violation de ses droits et au renvoi de la cause au département concerné pour reprise du processus de nomination à son commencement. La commandante de la police a conclu au rejet du recours.
B.b. Par arrêt du 27 août 2019, la Chambre administrative a rejeté le recours en tant qu'il était recevable et a mis un émolument judiciaire de 500 fr. à la charge du recourant compte tenu de l'issue du litige. Elle a considéré en bref que la non-promotion du recourant ne constituait pas une décision au sens de la loi cantonale sur la procédure administrative - laquelle excluait d'ailleurs l'application des règles de procédure contenues dans cette loi à la promotion dans la fonction publique - et que la commandante de la police ne pouvait pas se voir reprocher de n'avoir pas rendu de décision à cet égard. Le recours pour déni de justice était ainsi infondé et le recours était irrecevable en tant qu'il était dirigé contre le courrier du 28 janvier 2019.
C.
A._ interjette un recours constitutionnel subsidiaire contre ce jugement dont il demande l'annulation, en concluant principalement au constat que la commandante de la police a commis un déni de justice et subsidiairement au renvoi de la cause à l'autorité précédente afin qu'elle se saisisse du recours dirigé contre le courrier du 28 janvier 2019.

L'autorité cantonale déclare s'en remettre à justice sur la recevabilité du recours et persister dans les considérants et le dispositif de son arrêt. L'intimée s'en remet également à justice sur la recevabilité du recours et conclut à son rejet en tant qu'il n'est pas sans objet, dans la mesure où le recourant a postulé une nouvelle fois pour un poste de sergent-major opérationnel et où sa candidature a été retenue par l'État-major du service C._. Le recourant considère que l'objet du litige n'aurait pas disparu dès lors que sa nomination ne serait "en l'état pas actée" et que le jugement attaqué le condamne aux frais et dépens de la procédure.
Considérant en droit :
1.
1.1. Le jugement entrepris a été rendu en matière de rapports de travail de droit public. Il concerne une contestation qui, en tant qu'elle porte - au fond - sur une non-promotion à un poste plus élevé, a des effets sur le salaire et est donc de nature pécuniaire, de sorte que le motif d'exclusion du recours en matière de droit public prévu par l'art. 83 let. g LTF ne s'applique pas. Toutefois, vu que la valeur litigieuse, de l'aveu même du recourant, est inférieure au seuil de 15'000 fr. ouvrant la voie du recours en matière de droit public en ce domaine (art. 51 al. 2 et 85 al. 1 let. b LTF), le jugement entrepris ne peut faire l'objet que d'un recours constitutionnel subsidiaire (<ref-law>). Celui-ci a été déposé en temps utile (art. 117 et 100 LTF) contre une décision finale (art. 117 et 90 LTF) prise par l'autorité cantonale de dernière instance (art. 114 et 86 al. 1 let. d LTF).
1.2. Indépendamment du point de savoir si le recourant, qui a pris part à la procédure devant l'instance précédente (<ref-law>), est légitimé sous l'angle de l'<ref-law> à remettre en cause une décision sur le fond, il peut faire valoir la violation de ses droits de partie équivalant à un déni de justice formel (<ref-ruling> consid. 1.2 p. 326 et les arrêts cités). En l'espèce, le recourant soutient que le refus de le promouvoir au poste de sergent-major opérationnel est une décision susceptible de recours devant la Chambre administrative. Il reproche aux premiers juges de ne pas être entrés en matière sur son recours et se plaint en particulier d'une violation de la garantie de l'accès au juge (art. 29a Cst.). Dans cette mesure, il invoque la violation d'un droit de partie équivalent à un déni de justice formel indépendant du fond, de sorte que la voie du recours constitutionnel subsidiaire est ouverte à ce titre déjà, sans qu'il soit nécessaire d'examiner encore la question de l'intérêt juridiquement protégé (<ref-ruling> précité consid. 1.3 p. 326 et la référence).
1.3. Dans le recours constitutionnel subsidiaire comme dans le recours en matière de droit public, le recourant doit avoir un intérêt actuel et pratique à l'admission de son recours (<ref-ruling> consid. 1.3.1 p. 143; <ref-ruling> consid. 1.3.1 p. 24; <ref-ruling> consid. 1.2 p. 157; arrêts 8C_252/2018 du 29 janvier 2019 consid. 7.2; 8C_767/2016 du 7 août 2017 consid. 6.2), également lorsqu'il invoque un déni de justice formel (<ref-ruling> consid. 4a p. 287; arrêts 5A_164/2015 du 18 juin 2015 consid. 1.2.2; 2C_203/2014 du 9 mai 2015 consid. 2.5.2, in SJ 2016 I p. 37). Cet intérêt doit exister non seulement au moment du dépôt du recours, mais encore au moment où l'arrêt est rendu, le Tribunal fédéral se prononçant sur des questions concrètes et non pas simplement théoriques (<ref-ruling> consid. 4.2 p. 299 et les arrêts cités; <ref-ruling> consid. 1.2 p. 157). Le Tribunal fédéral déclare le recours irrecevable lorsque l'intérêt actuel fait défaut au moment du dépôt du recours; en revanche, si cet intérêt disparaît en cours de procédure - parce qu'un fait nouveau affecte l'objet du litige et lui enlève tout intérêt (cf. BERNARD CORBOZ, Commentaire de la LTF, 2e éd. 2014, n° 27 ad <ref-law>; FLORENCE AUBRY GIRARDIN, même ouvrage, n° 12 ad <ref-law>) -, le recours devient sans objet (<ref-ruling> consid. 1.3.1 précité; <ref-ruling> consid. 1.1 p. 208; <ref-ruling> précité consid. 1.3.1 p. 24 s. et les références). Celui qui n'a plus d'intérêt actuel à recourir sur le fond peut néanmoins recourir contre sa condamnation aux frais et dépens, pour autant que cela ne conduise pas à remettre en question la décision sur le fond; dès lors, il n'a qualité pour recourir que dans la mesure où il fait valoir que sa condamnation aux frais viole ses droits constitutionnels pour un autre motif que celui de son déboutement, par exemple parce que le droit cantonal prévoit la gratuité de la procédure (<ref-ruling> consid. 2.2 p. 300; <ref-ruling>; arrêts 4A_134/2012 du 16 juillet 2012 consid. 3; 4A_637/2010 du 2 février 2011 consid. 4; 1C_180/2009 du 14 octobre 2009 consid. 3.1 et les arrêts cités).
En l'espèce, le recourant ne démontre nullement en quoi il conserverait un intérêt actuel et pratique à son recours après que sa candidature au poste convoité de sergent-major opérationnel a désormais été retenue par l'État-major du service C._, ce qu'il ne conteste pas. On ne voit pas ce qu'il entend tirer du fait que sa nomination ne serait "en l'état pas actée". Au surplus, il ne prétend pas que sa condamnation aux frais violerait ses droits constitutionnels pour un autre motif que l'issue de la procédure de recours. Il s'ensuit que le recours est devenu sans objet et que la cause doit être rayée du rôle.
2.
2.1. Il doit en principe être statué par une décision sommairement motivée sur les frais du procès devenu sans objet, en tenant compte de l'état de choses existant avant le fait qui met fin au litige (<ref-law> [RS 273], par renvoi de l'<ref-law>) ainsi que de l'issue probable de celui-ci (<ref-ruling> consid. 8.2 p. 568; <ref-ruling> consid. 2a p. 374 s.). La décision à prendre au sujet des frais de la procédure ne saurait toutefois conduire le Tribunal fédéral à rendre un arrêt de fond, voire à préjuger d'une question juridique sensible. Si l'issue probable de la procédure n'apparaît pas évidente, il y a lieu de recourir aux critères généraux de procédure. Ceux-ci commandent de mettre les frais et dépens à la charge de la partie qui a provoqué la procédure devenue sans objet ou chez qui résident les motifs pour lesquels elle a pris fin de la sorte (<ref-ruling> consid. 4a p. 494; arrêts 5A_945/2018 du 21 juin 2019 consid. 2; 1B_132/2018 du 29 octobre 2018 consid. 1.3).
2.2. En l'espèce, le recourant soulève notamment la violation du principe de l'unité de la procédure (<ref-law>) et de la garantie de l'accès au juge (art. 29a Cst. et art. 6 CEDH), au motif qu'il a été empêché de faire valoir qu'il aurait été privé illicitement - soit en raison de ses engagements syndicaux et en violation de l'interdiction de la discrimination (art. 8 al. 2 Cst.) et de la liberté syndicale (art. 28 Cst.) - d'accéder à un poste auquel il pouvait légitimement prétendre. Ces questions n'apparaissent pas d'emblée évidentes et leur résolution va au-delà d'un simple examen sommaire. Il s'ensuit que les frais judiciaires - dont le montant peut être fixé en tenant compte du fait que la cause n'a pas dû être examinée sur le fond (cf. BERNARD CORBOZ, op. cit., n° 18 ad <ref-law>) - seront mis à la charge du recourant, qui a initié la procédure devenue sans objet.

Par ces motifs, le Tribunal fédéral prononce :
1.
La cause, devenue sans objet, est rayée du rôle.
2.
Les frais judiciaires, arrêtés à 800 fr., sont mis à la charge du recourant.
3.
Le présent arrêt est communiqué aux parties et à la Chambre administrative de la Cour de justice de la République et canton de Genève.
Lucerne, le 4 février 2020
Au nom de la Ire Cour de droit social
du Tribunal fédéral suisse
Le Président : Maillard
La Greffière : Castella