Zadanie 13. Pokaż wszystkich pracowników którzy już nie pracują w banku i oblicz ile lat pracowali w banku oraz ile miesięcy minęło od zakończenia stosunku pracy

Czego się dowiesz czytając ten wpis:

•  poznasz funkcję: DATEDIFF, GETDATE,
•  powtórzysz wiedzę nt. JOIN, IS NOT NULL, ALIASÓW i WHERE.

 

Zadanie 13.

Pokaż wszystkich pracowników którzy już nie pracują w banku i oblicz ile lat pracowali w banku oraz ile miesięcy minęło od wygaśnięcia ich stosunku pracy.

Wyniki przedstaw w postaci kolumn:

•  Imię i nazwisko
•  Dział
•  Data Zatrudnienia
•  Data Zakończenia Pracy
•  Lata Pracy /ile lat pracował pracownik/
•  Czas Od Końca Pracy /czas jaki upłynął (w miesiącach) od wygaśnięcia stosunku pracy do dnia dzisiejszego/

 

Rozwiązanie:

Do stworzenia naszego zapytania wykorzystamy zapytanie 12, które tylko zmodyfikujemy, a konkretniej dodamy trzy nowe kolumny: „Data Zatrudnienia” , „Lata Pracy” , „Czas Od Końca Pracy”.

Zacznijmy od dodania kolumny „Data Zatrudnienia”. Z tym zadaniem nie powinniśmy mieć problemów, wystarczy tylko w sekcji SELECT dodać nową kolumnę. Dane które potrzebujemy znajdują się w tabeli Pracownicy w kolumnie dataZatrudnienia. Pamiętaj, że w ćwiczeniu 12 dla tabeli Pracownicy nadaliśmy alias P (kod poniżej).

darmowy-kurs-sql-zadanie-13-free-sql-course-exercise-13

Kolejnym zadaniem z jakim musimy się zmierzyć jest wypełnienie danymi kolumny „Lata Pracy”. Tutaj z pomocą przyjdzie nam nowa dla nas funkcja DATEDIFF. Funkcja ta zwraca nam różnicę pomiędzy dwoma datami w zadeklarowanych przez nas wartościach np. latach, miesiącach, tygodniach itd. Struktura DATEDIFF poniżej.

darmowy-kurs-sql-zadanie-13-free-sql-course-exercise-13

Zacznijmy tworzyć drugą nową kolumnę „Lata Pracy”. Wiemy już z jakiej funkcji należy skorzystać – DATEDIFF. Wiemy także, że wartością czasu w jakich ma być wyrażona wartość w tej kolumnie są lata, czyli nasz pierwszy parametr przybierze wartość YEAR. Jako drugi parametr musimy podstawić datę początkową, czyli w naszym przypadku będzie to data zatrudnienia, a więc „P.dataZatrudnienia”. Trzecim parametrem funkcji DATEDIFF będzie data końcowa, czyli w naszym przypadku data zakończenia stosunku pracy „P.DataKoniecZatrudnienia”. Już poza nawiasem z parametrami funkcji DATEDIFF nazywamy tą kolumnę przy pomocy aliasu „AS [Lata Pracy]”. Cały kod poniżej

darmowy-kurs-sql-zadanie-13-free-sql-course-exercise-13

Przypomnijmy DATEDIFF zwraca czas pomiędzy dwoma datami, datą początkową (parametr 2) i datą końcową (parametr 3) w zadeklarowanych jednostkach czasu (parametr 1, u nas w latach).

Ostatnie zadanie to zadeklarowanie kolumny która wskaże nam ile czasu upłynęło od momentu wygaśnięcia stosunku pracy pracownika do chwili obecnej. No ale jak zadeklarować „chwilę obecną”, przecież możemy wykonać ten skrypt dzisiaj albo jutro i co wtedy? Do określenia „chwili obecnej” a w zasadzie aktualnej daty i godziny służy funkcja GETDATE(). Zwraca ona aktualny czas i godzinę w momencie uruchomienia skryptu. Jeśli wiec uruchomimy skrypt dzisiaj uzyskamy wynik w zadanych jednostkach czasu do dzisiaj, jeśli skrypt uruchomimy jutro otrzymamy wynik adekwatnie większy (do daty jutrzejszej w zależności od jednostek w które wybraliśmy do prezentacji wyniku). Polecenie mówi jasno, że czas obliczamy w miesiącach. Pierwszym parametrem naszej funkcji DATEDIFF  będzie month. Drugim parametrem, czyli nasza data początkowa, będzie data zakończenia pracy, czyli „P.dataKoniecZatrudnienia”. Trzecim parametrem będzie aktualna data, czyli funkcja GETDATE(). Składają wszystko w jedno polecenie otrzymujemy poniższy kod, przypominam, że korzystaliśmy z zapytania z zadnia 12 więc całą resztę mamy gotową.

darmowy-kurs-sql-zadanie-13-free-sql-course-exercise-13

Uruchamiamy zapytanie i otrzymujemy wynik.

darmowy-kurs-sql-zadanie-13-free-sql-course-exercise-13