Étant donné une table «employés»
employee_id | salary | department_id
-------------+--------+---------------
Seule l'utilisation de SQL permet de trouver toutes les variantes de transfert d'employés d'un département à un autre, de sorte que le salaire moyen dans les départements «départ» et «arrivée» a augmenté.
PS: on m'a posé la question lors d'une interview, qui n'a jamais donné de réponse, et Google ne sert à rien.
interview-question
Alexandre
la source
la source
Réponses:
Vous recherchez donc des employés qui gagnent en dessous de la moyenne dans leur département actuel mais au-dessus de la moyenne dans leur nouveau département potentiel.
Une façon possible d'obtenir tous les transferts d'employés qui répondraient à ce
la source
employees
. Cela permet de trouver tous les services vers lesquels ils pourraient être transférés (le cas échéant) qui remplissent la condition.Étant donné qu'il s'agissait d'une question d' entrevue (et non d'une question test ), il existe quelques possibilités selon le contexte.
La question est incomplète comme indiqué et
ne peux pasil ne faudrait peut-être pas répondre dans sa forme actuelle ( voir la section MISE À JOUR ci-dessous ). Que manque-t-il? Eh bien, par exemple:S'il s'agit davantage d'une table OLTP, alors il devrait y avoir une contrainte PK / Unique Index / Unique définie sur le
employee_id
champ. Et dans ce cas, il n'y aurait qu'une seule entrée paremployee_id
et donc aucun moyen de déterminer les transferts (c'est-à-dire qu'il n'y a pas de «vieux»department_id
enregistrement).S'il s'agit davantage d'une table OLAP, il peut s'agir d'une dimension à évolution lente, auquel cas il y aurait plusieurs
employee_id
enregistrements. Mais, il faudrait aussi êtreValidFrom
etValidTo
champs DATE / DATETIME de sorte que le départ et l' arrivée départements peuvent être déterminés dans leur bon ordre. Sans ces champs, il n'y a aucun moyen de déterminer quel département est le départ et lequel est l' arrivée . Et ne pas connaître cette distinction permettrait de récupérer des enregistrements qui sont à l'opposé de la demande.Donc, ce "contexte" pour interpréter cette question est la raison pour laquelle la question est formulée telle qu'elle est.
Vous avez oublié quelques détails entre l'interview et la poser ici:
Cela arrive, mais si c'est le cas, alors soit vous devez mettre à jour la question pour remplir les informations manquantes, soit cela restera sans réponse (au moins en termes d'obtention d'une réponse significative).
La question a été transcrite avec précision ici, et ces questions n'étaient pas connues de l'enquêteur ou des enquêteurs ou n'étaient pas destinées à lui:
Dans ce cas, si vous étiez au courant de ces problèmes et qu'ils attendaient une réponse, vous pouvez l'utiliser comme un moyen de les éliminer en tant qu'employeur possible ;-).
La question a été transcrite avec précision ici, et ces questions étaient connues de l'enquêteur ou des enquêteurs:
Dans ce cas, ils utilisaient probablement cela comme un moyen d'éliminer les gens en examinant plus que la capacité technique brute. Il est souvent très important de poser des questions pour être très clair sur le projet sur lequel vous travaillez, car la plupart des utilisateurs finaux et des propriétaires de produits, etc. ne pensent / parlent pas dans les détails techniques de bas niveau et omettent souvent les éléments nécessaires. Il est important de ne pas supposer, mais plutôt de retourner à la source de la demande pour obtenir des éclaircissements afin de ne pas perdre de temps à travailler dans la mauvaise direction.
N'oubliez pas que vous n'interviewez pas pour un poste afin de simplement répondre à des questions techniques dans le vide. Vous êtes en entrevue pour un poste pour travailler sur des projets et il y aura toujours des ambiguïtés et / ou des informations trompeuses dans ce que l'on vous demande de faire. Un bon intervieweur essaiera de comprendre à la fois votre niveau de compétence et si vous serez réellement productif. J'ai posé des questions comme celle-ci en interviewant des gens pour éliminer les gens qui répondent bien aux questions techniques mais qui auraient besoin de trop de main et finiraient par ralentir l'équipe.
MISE À JOUR:
Juste pour clarifier la clarification pour ceux qui pensent qu'il s'agit d'une simple question de compétence, interprétée comme @Martin l'a fait dans sa réponse: nous ne savons même pas si c'est le libellé exact de la question qui a été présentée au PO Mais nous savons, dans la mesure où nous pouvons faire confiance à la situation, que cela a été donné dans une interview. Et bonles enquêteurs posent des questions qui non seulement font ressortir les compétences techniques des candidats, mais aussi leurs compétences non techniques / "non techniques". Il se pourrait très bien que Martin ait raison dans son interprétation que la question porte sur les futures combinaisons de transfert possibles (c'est-à-dire "parfois un cigare n'est qu'un cigare"). Et s'il s'agissait d'une question test, je serais surpris si sa réponse n'était pas correcte. Mais ce n'est pas une question test. Bien sûr, il pourrait s'agir d'une question d'entrevue posée par quelqu'un qui n'essaie pas de voir quel type de personne le candidat est et comment il se comporterait lors d'une réunion de conception où de telles ambiguïtés surgissent plus souvent que la plupart des gens ne le remarquent. Mais aucune réponse n'a été donnée,fait avancer les choses (recherchez sur la page "Vous cherchez des gens qui", mais vous devriez vraiment lire le tout). Donc, entre deux candidats qui sont égaux à tous égards, mais l'un a supposé l'interprétation et était correct, tandis que l'autre a posé des questions et a ensuite obtenu la bonne réponse, j'irais certainement avec celui qui a posé la première.
la source