Biorąc pod uwagę tabelę „pracownicy”
employee_id | salary | department_id
-------------+--------+---------------
Tylko przy użyciu SQL można znaleźć wszystkie warianty przeniesienia pracowników z jednego działu do drugiego, dzięki czemu średnia pensja zarówno w dziale „odejścia”, jak i „przyjazdu” wzrosła.
PS Zadano mi pytanie w wywiadzie, który nigdy nie udzielił odpowiedzi, a Google niewiele pomaga.
interview-question
Alexander
źródło
źródło
Odpowiedzi:
Poszukujesz pracowników, którzy zarabiają poniżej średniej w bieżącym dziale, ale powyżej średniej w przyszłym nowym dziale.
Jednym z możliwych sposobów uzyskania wszystkich przeniesień pracowników, które by to spełniły, byłoby
źródło
employees
. Znajduje to wszystkie działy, do których mogłyby przenieść (jeśli istnieją), które spełniają ten warunek.Biorąc pod uwagę, że było to pytanie do wywiadu (a nie pytanie testowe ), istnieje kilka możliwości w zależności od kontekstu.
Pytanie jest niekompletne, jak stwierdzono i
Nie mogębyć może nie należy na nie odpowiadać w obecnej formie ( patrz sekcja AKTUALIZACJA poniżej ). Czego brakuje? Na przykład:Jeśli jest to bardziej tabela OLTP, wówczas w
employee_id
polu powinno być zdefiniowane ograniczenie PK / Unique Index / Unique . I w takim przypadku byłby tylko jeden wpis na,employee_id
a zatem nie ma sposobu na określenie transferów (tj. Nie ma „starego”department_id
zapisu).Jeśli jest to bardziej tabela OLAP, może to być powolnie zmieniający się wymiar, w którym to przypadku będzie wiele
employee_id
rekordów. Ale nie byłoby też muszą byćValidFrom
iValidTo
pola DATE / DateTime tak że odlotów i przylotów wydziałów mogą być określone w odpowiedniej kolejności. Bez tych pól nie ma sposobu, aby ustalić, który dział jest odlotem, a który przylotem . I nie wiedząc, że to rozróżnienie umożliwi odzyskanie rekordów, które są przeciwieństwem żądania.Tak więc „kontekst” interpretacji tego pytania jest przyczyną, dla której pytanie jest sformułowane tak, jak jest.
Zapomniałeś pewnych szczegółów między wywiadem a pytaniem tutaj:
Zdarza się, ale jeśli tak, to albo musisz zaktualizować pytanie, aby uzupełnić brakujące informacje, albo pozostanie bez odpowiedzi (przynajmniej jeśli chodzi o uzyskanie sensownej odpowiedzi).
Pytanie zostało dokładnie przetłumaczone tutaj, a ankieterzy (rozmówcy) nie znali ani nie zamierzali omawiać tych problemów :
W takim przypadku, jeśli zdawałeś sobie sprawę z tych problemów i oni oczekiwali odpowiedzi, możesz użyć tego jako środka do wyeliminowania ich jako potencjalnego pracodawcy ;-).
Pytanie zostało dokładnie przetłumaczone tutaj, a te problemy były znane lub zamierzone przez ankietera (ów):
W tym przypadku prawdopodobnie używali tego jako sposobu na wyplenienie ludzi, patrząc na coś więcej niż surową zdolność techniczną. Często jest to bardzo ważne, aby zadawać pytania, aby być bardzo jasne, o projekcie, nad którym pracujesz, ponieważ większość użytkowników końcowych i właścicieli produktów, etc nie myśleć / mówić w niskopoziomowych szczegółów technicznych i często opuścić niezbędne elementy. Ważne jest, aby nie zakładać, ale zamiast tego wrócić do źródła żądania, aby uzyskać wyjaśnienie, aby nie tracić czasu na pracę w złym kierunku.
Pamiętaj, że nie rozmawiasz o stanowisko, aby po prostu odpowiedzieć na pytania techniczne w próżni. Prowadzisz rozmowę kwalifikacyjną w sprawie stanowiska do pracy nad projektami i zawsze pojawią się dwuznaczności i / lub wprowadzające w błąd informacje dotyczące tego, o co jesteś proszony. Dobry ankieter spróbuje zrozumieć zarówno twój poziom umiejętności, jak i efektywność. Tak zadawałem pytania podczas przeprowadzania wywiadów z ludźmi, aby wyeliminować osoby, które dobrze odpowiadają na pytania techniczne, ale wymagałyby zbyt dużego trzymania się za ręce i ostatecznie spowolniłyby zespół.
AKTUALIZACJA:
Aby wyjaśnić wyjaśnienie dla tych, którzy uważają, że jest to proste pytanie umiejętności zapytania, interpretowane tak, jak @Martin w swojej odpowiedzi: nie wiemy nawet, czy jest to dokładne sformułowanie pytania, które zostało przedstawione OP, ale wiemy, na tyle, na ile możemy ufać sytuacji, że zostało to udzielone w wywiadzie. I dobrzeankieterzy zadają pytanie, które nie tylko wykształci umiejętności techniczne kandydata, ale także jego umiejętności nietechniczne / „miękkie”. Możliwe, że Martin ma rację w swojej interpretacji, że pytanie dotyczy potencjalnych kombinacji transferu w przyszłości (tj. „Czasami cygaro to po prostu cygaro”). Gdyby to było pytanie testowe, byłbym zaskoczony, gdyby jego odpowiedź była nieprawidłowa. Ale to nie jest pytanie testowe. Jasne, może to być pytanie do rozmowy kwalifikacyjnej zadawane przez kogoś, kto nie próbuje zobaczyć, jakiego rodzaju osobą jest kandydat i jak zachowałby się na spotkaniu projektowym, gdzie takie dwuznaczności pojawiają się częściej niż większość ludzi nawet zauważa. Ale nie udzielono odpowiedzi,załatwia sprawę (wyszukaj na stronie hasło „Szukasz ludzi, którzy”, ale naprawdę powinieneś przeczytać całość). Tak więc pomiędzy dwoma kandydatami, którzy są równi pod każdym względem, ale jeden przyjął interpretację i był poprawny, podczas gdy drugi zadał pytania, a następnie otrzymał poprawną odpowiedź, zdecydowanie wybrałbym tego, który zadał pierwszy.
źródło