USE w65567_FIRMA;
SELECT * FROM PRACOWNICY;
SELECT * FROM DEPARTAMENTY;

-- 1.	Dla każdego pracownika podaj na jakim stanowisku pracuje
SELECT NAZWISKO, STANOWISKO FROM PRACOWNICY;

-- 2.	Znajdź różnice między najwyższymi a najniższymi zarobkami, nazwij kolumnę wyświetlająca wynik różnica
SELECT max(PENSJA) - min(PENSJA) AS ROZNICA FROM PRACOWNICY;

-- 3.	Ilu jest pracowników 
SELECT count(IDENTYFIKATOR) FROM PRACOWNICY;

-- 4.	Kto zarabia powyżej 3 tys?
SELECT NAZWISKO, PENSJA FROM PRACOWNICY WHERE PENSJA > 3000;

-- 5.	Kiedy zatrudniono pierwszego pracownika
SELECT TOP 1 NAZWISKO, DATA_ZATRUD FROM PRACOWNICY ORDER BY DATA_ZATRUD ASC;

-- 6.	Wypisz nazwiska pracowników zatrudnionych w maju
SELECT NAZWISKO, DATA_ZATRUD FROM PRACOWNICY WHERE month(DATA_ZATRUD) = 5;
SELECT NAZWISKO, DATA_ZATRUD FROM PRACOWNICY WHERE DATA_ZATRUD LIKE '%-05-%';

-- 7.	Wypisz nazwiska pracowników z działu Sprzedaży
SELECT NAZWISKO, NAZWA FROM PRACOWNICY INNER JOIN DEPARTAMENTY ON PRACOWNICY.KOD_dzialu=DEPARTAMENTY.KOD_dzialu WHERE DEPARTAMENTY.NAZWA='Sprzedazy';

-- 8.	Podaj nazwę działu z Krakowa
SELECT NAZWA FROM DEPARTAMENTY WHERE LOKALIZACJA='Krakow';

-- 9.	Ile osób pracuje na stanowisku Sprzedawca
SELECT count(IDENTYFIKATOR) FROM PRACOWNICY WHERE STANOWISKO='Sprzedawca';

-- 10.  Jak długo pracuje najwcześniej zatrudniony pracownik
SELECT TOP 1 DATA_ZATRUD, datediff(year, DATA_ZATRUD, getdate()) FROM PRACOWNICY ORDER BY DATA_ZATRUD ASC;
SELECT year(getdate()) - year(DATA_ZATRUD) FROM PRACOWNICY ORDER BY DATA_ZATRUD ASC;

-- 11.  Ilu jest pracowników w każdym dziale
SELECT KOD_dzialu, count(IDENTYFIKATOR) AS ILOSC FROM PRACOWNICY GROUP BY KOD_dzialu;

-- 12.  Ilu jest pracowników w każdym dziale z wyjątkiem działu 20
SELECT KOD_dzialu, count(IDENTYFIKATOR) AS ILOSC FROM PRACOWNICY WHERE KOD_dzialu != 20 GROUP BY KOD_dzialu;

-- 13.  Podaj nazwę działu w którym jest co najmniej 4 pracowników
SELECT NAZWA, count(IDENTYFIKATOR) FROM DEPARTAMENTY INNER JOIN PRACOWNICY ON DEPARTAMENTY.KOD_dzialu=PRACOWNICY.KOD_dzialu GROUP BY NAZWA HAVING count(IDENTYFIKATOR) >= 4;

-- 14.  Który pracownik ma najdłuższe nazwisko
SELECT TOP 1 NAZWISKO FROM PRACOWNICY ORDER BY len(NAZWISKO) DESC;
SELECT TOP 1 NAZWISKO FROM PRACOWNICY WHERE len(NAZWISKO)=(SELECT max(len(NAZWISKO)) FROM PRACOWNICY);

-- 15.  Kto zarabia najwięcej
SELECT NAZWISKO FROM PRACOWNICY WHERE PENSJA=(SELECT max(PENSJA) FROM PRACOWNICY);

-- 16.  Podaj nazwisko pracownika który najdłużej pracuje
SELECT NAZWISKO FROM PRACOWNICY WHERE DATA_ZATRUD=(SELECT min(DATA_ZATRUD) FROM PRACOWNICY);

-- 17.  Podaj nazwisko pracownika który nie ma prowizji (is null)
SELECT NAZWISKO FROM PRACOWNICY WHERE PROWIZJA IS NULL;

-- 18.  Podaj kierownika który zarządza działem z Krakowa
SELECT NAZWISKO FROM PRACOWNICY INNER JOIN DEPARTAMENTY ON PRACOWNICY.KOD_dzialu=DEPARTAMENTY.KOD_dzialu WHERE STANOWISKO='Kierownik' AND LOKALIZACJA='Krakow';

-- 19.  Podaj nazwę działu w którym pracuje co najmniej 3 pracowników
SELECT NAZWA, count(IDENTYFIKATOR) FROM DEPARTAMENTY INNER JOIN PRACOWNICY ON DEPARTAMENTY.KOD_dzialu=PRACOWNICY.KOD_dzialu GROUP BY NAZWA HAVING count(IDENTYFIKATOR) >= 3;

-- 20.  Podaj nazwiska pracowników którzy zarabiają między 2000 a 3000 (between)
SELECT NAZWISKO FROM PRACOWNICY WHERE PENSJA BETWEEN 2000 AND 3000;