lab1/lab1_select.sql

66 lines
3.3 KiB
MySQL
Raw Normal View History

2022-10-18 09:25:04 +00:00
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;