Angesichts einer Tabelle "Mitarbeiter"
employee_id | salary | department_id
-------------+--------+---------------
Nur mit SQL werden alle Varianten von Mitarbeiterübertragungen von einer Abteilung in eine andere gefunden, sodass das Durchschnittsgehalt sowohl in der Abteilungs- als auch in der Ankunftsabteilung gestiegen ist.
PS Mir wurde die Frage in einem Interview gestellt, das nie eine Antwort gab, und Google ist wenig hilfreich.
interview-question
Alexander
quelle
quelle
Antworten:
Sie suchen also Mitarbeiter, die in ihrer derzeitigen Abteilung unter dem Durchschnitt, in ihrer künftigen neuen Abteilung jedoch über dem Durchschnitt liegen.
Ein möglicher Weg, alle Mitarbeiter-Transfers zu erhalten, die dies erfüllen würden, wäre
quelle
employees
. Hiermit werden alle Abteilungen ermittelt, die diese Bedingung erfüllen (sofern vorhanden).Da dies eine Interviewfrage (und keine Testfrage ) war, gibt es je nach Kontext einige Möglichkeiten.
Die Frage ist wie angegeben und unvollständig
kann nichtSollte in der aktuellen Form möglicherweise nicht beantwortet werden ( siehe Abschnitt UPDATE weiter unten ). Was fehlt? Nun, zum Beispiel:Wenn dies eher eine OLTP-Tabelle ist, sollte für das
employee_id
Feld eine PK / Unique Index / Unique-Einschränkung definiert sein . Und in diesem Fall würde es nur einen Eintrag proemployee_id
und daher keine Möglichkeit geben, Übertragungen zu bestimmen (dh es gibt keinen "alten"department_id
Datensatz).Wenn dies eher eine OLAP-Tabelle ist, kann dies eine sich langsam ändernde Dimension sein. In diesem Fall gibt es mehrere
employee_id
Datensätze. Es müssten jedoch auch FelderValidFrom
undValidTo
DATE / DATETIME vorhanden sein, damit die Abfahrts- und Ankunftsabteilungen in der richtigen Reihenfolge bestimmt werden können. Ohne diese Felder ist es nicht möglich zu bestimmen, welche Abteilung die Abfahrt und welche die Ankunft ist . Und wenn Sie diese Unterscheidung nicht kennen, können Sie Aufzeichnungen zurückerhalten, die das Gegenteil der Anforderung darstellen.Dieser "Kontext" für die Interpretation dieser Frage ist der Grund, warum die Frage so gestellt wird, wie sie ist.
Sie haben einige Details zwischen dem Interview und der Frage hier vergessen:
Es kommt vor, aber wenn dies der Fall ist, müssen Sie entweder die Frage aktualisieren, um die fehlenden Informationen einzufügen, oder sie bleibt unbeantwortet (zumindest, um eine aussagekräftige Antwort zu erhalten).
Die Frage wurde hier genau transkribiert, und diese Probleme waren dem / den Interviewer (n) nicht bekannt oder beabsichtigt:
In diesem Fall, wenn Sie sich dieser Probleme bewusst waren und sie eine Antwort erwarteten, können Sie sie als möglichen Arbeitgeber aussortieren ;-).
Die Frage wurde hier genau transkribiert, und diese Probleme waren dem / den Interviewer (n) bekannt oder von ihm beabsichtigt:
In diesem Fall nutzten sie dies wahrscheinlich, um die Leute auszusondern, indem sie mehr als nur die rohen technischen Fähigkeiten betrachteten. Oft ist es sehr wichtig , Fragen zu stellen , um seine sehr auf dem Projekt klar das Sie arbeiten , da die meisten Endnutzer und Produkt Besitzer, etc glaube nicht / spricht in Low-Level - technische Details und wird oft notwendig Stücke auslassen. Es ist wichtig, nicht anzunehmen, sondern zur Quelle der Anfrage zurückzukehren, um eine Klärung zu erhalten, damit Sie keine Zeit damit verschwenden, in die falsche Richtung zu arbeiten.
Denken Sie daran, dass Sie sich nicht für eine Stelle bewerben, um einfach technische Fragen im luftleeren Raum zu beantworten. Sie werden interviewt, um eine Position für die Arbeit an Projekten zu erhalten, und es wird immer Unklarheiten und / oder irreführende Informationen darüber geben, was zu tun ist. Ein guter Interviewer versuchen , ein Verständnis sowohl Ihre Fähigkeiten zu erhalten und wenn Sie tatsächlich produktiv sein. Ich habe Fragen wie diese gestellt, wenn ich Leute befragte, um Leute auszusondern, die technische Fragen gut beantworten, aber zu viel Handarbeit benötigen und das Team am Ende verlangsamen würden.
AKTUALISIEREN:
Nur um die Klarstellung für diejenigen zu klären, die das Gefühl haben, dass dies eine einfache Frage zum Abfragen von Fähigkeiten ist, interpretiert wie @Martin es in seiner Antwort getan hat: Wir wissen nicht einmal, ob dies der genaue Wortlaut der Frage ist, die dem OP vorgelegt wurde Wir wissen, soweit wir der Situation vertrauen können, dass dies in einem Interview gegeben wurde. Und gutInterviewer stellen Fragen, die nicht nur die technischen Fähigkeiten eines Kandidaten auszeichnen, sondern auch seine nicht-technischen / "weichen" Fähigkeiten. Es könnte sehr gut sein, dass Martin in seiner Interpretation richtig liegt, dass die Frage nach möglichen zukünftigen Transferkombinationen gestellt wird (dh "manchmal ist eine Zigarre nur eine Zigarre"). Und wenn dies eine Testfrage wäre, wäre ich überrascht, wenn seine Antwort nicht korrekt wäre. Dies ist jedoch keine Testfrage. Klar, es könnte sich um eine Interviewfrage handeln, die von jemandem gestellt wird, der nicht versucht, herauszufinden, um welche Art von Person es sich bei dem Kandidaten handelt und wie sie sich bei einem Designtreffen verhalten, bei dem solche Unklarheiten häufiger auftreten, als die meisten Leute überhaupt bemerken. Aber es wurde keine Antwort gegeben,erledigt Dinge (suche auf der Seite nach "Du suchst nach Leuten, die", aber du solltest das Ganze wirklich lesen). Also, zwischen zwei Kandidaten, die in jeder Hinsicht gleich sind, von denen jedoch einer die Interpretation annahm und korrekt war, während der andere Fragen stellte und dann die richtige Antwort erhielt, würde ich auf jeden Fall mit demjenigen gehen, der zuerst fragte.
quelle