Back to posts Edit this post
Copy content

09 Dec 13:02

BD 7 dzialajace
SELECT '' AS Zadanie7_1_a FROM dual; SELECT NAZWISKO, PLACA_POD FROM PRACOWNICY ORDER BY PLACA_POD DESC FETCH FIRST 3 ROWS ONLY; SELECT '' AS Zadanie7_1_b FROM dual; SELECT NAZWISKO, PLACA_POD FROM ( SELECT NAZWISKO, PLACA_POD FROM PRACOWNICY ORDER BY PLACA_POD DESC ) WHERE ROWNUM <= 3; SELECT '' AS Zadanie7_2_a FROM dual; select nazwisko, placa_pod from PRACOWNICY order by placa_pod desc offset 5 rows fetch next 5 rows with ties; SELECT '' AS Zadanie7_2_b FROM dual; SELECT NAZWISKO, PLACA_POD FROM ( SELECT NAZWISKO, PLACA_POD, ROWNUM as RN FROM ( SELECT NAZWISKO, PLACA_POD FROM PRACOWNICY ORDER BY PLACA_POD DESC ) ORDER BY PLACA_POD DESC ) WHERE RN BETWEEN 6 AND 10; SELECT '' AS Zadanie7_3 FROM dual; WITH SREDNIE_PLAC AS ( SELECT id_zesp, AVG(PLACA_POD) AS SREDNIA FROM PRACOWNICY GROUP BY id_zesp ) SELECT P.NAZWISKO, P.PLACA_POD, (P.PLACA_POD - S.SREDNIA) AS ROZNICA FROM PRACOWNICY P JOIN SREDNIE_PLAC S ON P.id_zesp = S.id_zesp WHERE (P.PLACA_POD - S.SREDNIA) > 0 order by nazwisko; SELECT '' AS Zadanie7_4 FROM dual; WITH lata AS ( SELECT EXTRACT(YEAR FROM ZATRUDNIONY) AS rok, COUNT(*) AS liczba FROM pracownicy GROUP BY EXTRACT(YEAR FROM ZATRUDNIONY) ) SELECT * FROM lata ORDER BY liczba DESC; SELECT '' AS Zadanie7_4 FROM dual; SELECT EXTRACT(YEAR FROM ZATRUDNIONY) AS rok, COUNT(*) AS liczba FROM pracownicy GROUP BY EXTRACT(YEAR FROM ZATRUDNIONY) order by count(*) desc; SELECT '' AS Zadanie7_5_1 FROM dual; WITH lata AS ( SELECT EXTRACT(YEAR FROM ZATRUDNIONY) AS rok, COUNT(*) AS liczba FROM pracownicy GROUP BY EXTRACT(YEAR FROM ZATRUDNIONY) ) SELECT * FROM lata order by liczba desc fetch first 1 rows only; -- WHERE liczba = (SELECT MAX(liczba) FROM lata); SELECT '' AS Zadanie7_5_2 FROM dual; WITH lata AS ( SELECT EXTRACT(YEAR FROM ZATRUDNIONY) AS rok, COUNT(*) AS liczba FROM pracownicy GROUP BY EXTRACT(YEAR FROM ZATRUDNIONY) ) SELECT * FROM lata WHERE liczba = (SELECT MAX(liczba) FROM lata); SELECT '' AS Zadanie7_6 FROM dual; WITH Asystenci AS ( SELECT NAZWISKO, ETAT, ID_ZESP FROM pracownicy WHERE ETAT = 'ASYSTENT' ), Piotrowo AS ( SELECT ID_ZESP, NAZWA, ADRES FROM zespoly WHERE ADRES = 'PIOTROWO 3A' ) SELECT a.NAZWISKO, a.ETAT, p.NAZWA, p.ADRES FROM Asystenci a JOIN Piotrowo p ON a.ID_ZESP = p.ID_ZESP; SELECT '' AS Zadanie7_7 FROM dual; WITH ZespolySuma AS ( SELECT z.NAZWA, SUM(p.PLACA_POD) AS maks_suma_plac FROM zespoly z JOIN pracownicy p ON z.ID_ZESP = p.ID_ZESP GROUP BY z.NAZWA ) SELECT NAZWA, maks_suma_plac FROM ZespolySuma WHERE maks_suma_plac = ( SELECT MAX(maks_suma_plac) FROM ZespolySuma ); SELECT '' AS Zadanie7_8_1 FROM dual; WITH Hierarchia (ID_PRAC, NAZWISKO, ID_SZEFA, POZYCJA_W_HIERARCHII) AS ( SELECT ID_PRAC, NAZWISKO, ID_SZEFA, 1 AS POZYCJA_W_HIERARCHII FROM pracownicy WHERE NAZWISKO = 'BRZEZINSKI' UNION ALL SELECT p.ID_PRAC, p.NAZWISKO, p.ID_SZEFA, h.POZYCJA_W_HIERARCHII + 1 FROM pracownicy p JOIN Hierarchia h ON p.ID_SZEFA = h.ID_PRAC ) SELECT NAZWISKO, POZYCJA_W_HIERARCHII FROM Hierarchia ORDER BY POZYCJA_W_HIERARCHII, NAZWISKO; SELECT '' AS Zadanie7_8_2 FROM dual; SELECT NAZWISKO, LEVEL AS POZYCJA_W_HIERARCHII FROM pracownicy START WITH NAZWISKO = 'BRZEZINSKI' CONNECT BY PRIOR ID_PRAC = ID_SZEFA ORDER BY POZYCJA_W_HIERARCHII, NAZWISKO; SELECT '' AS Zadanie7_9_1 FROM dual; WITH Hierarchia(ID_PRAC, NAZWISKO, ID_SZEFA, POZYCJA_W_HIERARCHII) AS ( SELECT ID_PRAC, NAZWISKO, ID_SZEFA, 1 AS POZYCJA_W_HIERARCHII FROM pracownicy WHERE NAZWISKO = 'BRZEZINSKI' UNION ALL SELECT p.ID_PRAC, p.NAZWISKO, p.ID_SZEFA, h.POZYCJA_W_HIERARCHII + 1 FROM pracownicy p JOIN Hierarchia h ON p.ID_SZEFA = h.ID_PRAC ) SELECT RPAD(' ', POZYCJA_W_HIERARCHII) || NAZWISKO AS NAZWISKO, POZYCJA_W_HIERARCHII FROM Hierarchia ORDER BY POZYCJA_W_HIERARCHII, NAZWISKO; SELECT '' AS Zadanie7_9_2 FROM dual; SELECT LPAD(' ', (LEVEL - 1)) || NAZWISKO AS NAZWISKO, LEVEL AS POZYCJA_W_HIERARCHII FROM PRACOWNICY START WITH NAZWISKO = 'BRZEZINSKI' CONNECT BY PRIOR ID_PRAC = ID_SZEFA ORDER BY POZYCJA_W_HIERARCHII;

No files