Back to posts Edit this post
Copy content

09 Dec 14:50

bazy danych zaj 7 lekki edit
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 numer FROM ( SELECT NAZWISKO, PLACA_POD FROM PRACOWNICY ORDER BY PLACA_POD DESC ) ORDER BY PLACA_POD DESC ) WHERE numer 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 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; 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 Zadanie_7_7 FROM DUAL; WITH ID_I_SUMY_PLAC AS ( SELECT ID_ZESP, SUM(PLACA_POD) as suma_plac FROM PRACOWNICY GROUP BY ID_ZESP ) SELECT z.NAZWA, i.SUMA_PLAC FROM zespoly z JOIN id_i_sumy_plac i on z.id_zesp = i.id_zesp order by suma_plac desc fetch first 1 row only; 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