diff --git a/lab1_select.sql b/lab1_select.sql new file mode 100644 index 0000000..a282080 --- /dev/null +++ b/lab1_select.sql @@ -0,0 +1,66 @@ +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; \ No newline at end of file