SQLzadania

March 28, 2018 | Author: vladimir1923 | Category: Databases, Data Management Software, Sql, Data Management, Computing And Information Technology


Comments



Description

--nvl(sal,0) dziala tak, ze jesli sal jest null to wybiera 0, jak nie jest null to wybiera wartoscsal --Temat 6 --SQL – proste zapytania --1. Wybierz numery departamentów, nazwiska pracowników oraz numery pracownicze ich szefów z tabeli EMP. SELECT deptno ,ename ,mgr FROM emp; --2. Wybierz wszystkie kolumny z tabeli EMP. SELECT * FROM emp; --3. Wylicz roczną pensję podstawową dla każdego pracownika. SELECT ename ,12*nvl(sal,0) "salary" FROM emp; --4. Wylicz roczną pensję podstawową dla każdego pracownika gdyby każdemu dać podwyżkę o 250. SELECT ename ,12*nvl(sal+250,0) "higher salary" FROM emp; --5. Wybrane wyrażenie SAL*12 zaetykietuj nagłówkiem ROCZNA. SELECT ename ,12*sal "Roczny dochód" FROM emp; --6. Wybrane wyrażenie SAL*12 zaetykietuj nagłówkiem R PENSJA. SELECT ename ,12*sal "R PENSJA" FROM emp; --7. Połącz EMPNO i nazwisko, opatrz je nagłówkiem EMPLOYEE. SELECT empno || ' ' || ename "EPLOYEE" FROM emp; --8. Utwórz zapytanie zwracające wynik w postaci np. „Kowalski pracuje w dziale 20”. SELECT ename || ' pracuje w dziale ' || deptno || '.' "ZDANIE" FROM emp; --9. Wylicz roczną pensję całkowitą dla każdego pracownika (z uwzględnieniem prowizji). SELECT ename ,(12*nvl(sal,0)+nvl(comm,0)) "PENSJA Z PROWIZJA" FROM emp; --10. Wyświetl wszystkie numery departamentów występujące w tabeli EMP. SELECT deptno FROM emp; --11. Wyświetl wszystkie różne numery departamentów występujące w tabeli EMP. SELECT DISTINCT deptno FROM emp; --12. Wybierz wszystkie wzajemnie różne kombinacje wartości DEPTNO i JOB. SELECT DISTINCT deptno ,job FROM emp ORDER BY deptno; Posortuj malejąco wszystkie dane tabeli EMP według daty ich zatrudnienia począwszy od ostatnio zatrudnionych. SELECT * FROM emp ORDER BY ename.ename .job . numery.mgr . Wybierz dane tych pracowników.7566 lub 7788. --20. których nazwiska są czteroliterowe.deptno FROM emp ORDER BY deptno ASC .deptno FROM emp WHERE deptno > 20. --22. SELECT * FROM emp where mgr IS NULL. których nazwiska zaczynają się na S. SELECT * FROM emp where ename LIKE '____'. --21. SELECT * FROM emp WHERE mgr = 7902 OR mgr = 7566 OR mgr = 7788. których zarobki mieszczą się pomiędzy 1000 a 2000. Wybierz dane tych pracowników.deptno FROM emp WHERE job = 'CLERK'. Wybierz pracowników. SELECT empno . --16. SELECT ename FROM emp WHERE nvl(comm. Wybierz wszystkie nazwy i numery departamentów większe od nr 20.hiredate . SELECT ename . których prowizja przekracza miesięczną pensję. --15. SELECT * FROM emp WHERE ename LIKE 'S%'. --23. SELECT * FROM emp WHERE 1000 <= sal AND sal <= 2000. Wybierz nazwiska. SELECT ename .0) > nvl(sal. --14. .comm . --19.sal DESC. których bezpośrednimi szefami są 7902.job . --18. Wybierz dane tych pracowników.--13. --17. Posortuj dane tabeli EMP według wzrastających wartości kolumn DEPTNO oraz malejących wartości kolumny SAL (bez wypisywania kolumny SAL). stanowiska pracy i numery departamentów wszystkich pracowników zatrudnionych na stanowisku CLERK. Posortuj wszystkie dane tabeli EMP według ENAME. Wybierz dane pracowników.empno .0). SELECT * FROM emp ORDER BY hiredate DESC. którzy nie posiadają szefa. Wybierz dane tych pracowników. 2000). . Wybierz dane tych pracowników zatrudnionych na stanowisku CLERK których zarobki SAL mieszczą się w przedziale <1000. --25. --29. SELECT DISTINCT job FROM emp. --34. SELECT * FROM emp WHERE deptno = '10' OR deptno = '20' ORDER BY ename. Wybierz wszystkich pracowników zatrudnionych na stanowisku MANAGER z pensją powyżej 1500 oraz wszystkich pracowników na stanowisku SALESMAN. Wybierz numery i nazwy departamentów sortując według numerów departamentów. --36.2000). SELECT * FROM salgrade. --31. których nazwiska nie zaczynają się na M. SELECT * FROM emp WHERE job = 'CLERK' AND sal >=1000 AND sal < 2000. Wybierz wszystkich pracowników zatrudnionych na stanowisku MANAGER lub na stanowisku SALESMAN lecz zarabiających powyżej 1500. Wybierz wszystkie dane z tabeli SALGRADE. --35. SELECT * FROM emp WHERE ename NOT LIKE 'M%'. SELECT * FROM emp WHERE job = 'MANAGER' OR (job = 'CLERK' AND deptno = '10'). Wybierz wszystkie dane z tabeli DEPT. Wybierz wszystkie wzajemnie różne stanowiska pracy. --26. --33. którzy mają szefa. --28. SELECT * FROM emp WHERE (job = 'MANAGER' OR job = 'SALESMAN') AND sal > 1500.2000>. --27. niezależnie od pensji. Wybierz dane pracowników zatrudnionych w departamentach 10 i 20 we kolejności alfabetycznej ich nazwisk. SELECT * FROM emp WHERE sal < 1000 OR sal > 2000. których zarobki SAL mieszczą się w przedziale <1000. --32. Wybierz dane tych pracowników. SELECT * FROM emp where mgr IS NOT NULL. SELECT deptno . --30.dname FROM dept ORDER BY deptno. SELECT * FROM emp WHERE (job = 'MANAGER' AND sal > 1500) OR job = 'SALESMAN'.--24. Wybierz dane tych pracowników. Wybierz dane tych pracowników. SELECT * FROM emp WHERE job = 'CLERK' OR (sal >=1000 AND sal < 2000). SELECT * FROM dept. Wybierz dane pracowników zatrudnionych na stanowisku CLERK albo takich. których zarobki są poza przedziałem <1000. Wybierz wszystkich pracowników zatrudnionych na stanowisku MANAGER ze wszystkich departamentów wraz ze wszystkimi pracownikami zatrudnionymi na stanowisku CLERK w departamencie 10. hiredate FROM emp WHERE to_char(hiredate.deptno . SELECT employee. SELECT ename .lname .'yyyy') = 1980. Wybierz ENAME. które zajmują. potem nazwisk. SELECT * FROM DISCOUNTS.stor_id = stores. --7. --5. Połącz dane z tabeli DISCOUNTS i STORE przy pomocy LEFT JOIN. Połącz dane z tabeli DISCOUNTS i STORE przy pomocy warunku złączenia w WHERE.0) > nvl(comm.--37. --3. --39. dla których pracują. SELECT ename FROM emp WHERE ename LIKE '%TH%' OR ename LIKE '%LL%'.stor_id. --4. datę zatrudnienia oraz nazwy wydawnictw. --6. Połącz dane z tabeli DISCOUNTS i STORE przy pomocy INNER JOIN.ename ASC.publishers. DEPTNO i HIREDATE tych pracowników.12*nvl(sal.title ASC . Wybierz nazwiska pracowników.pub_id ORDER BY titles. Wybierz nazwiska wszystkich pracowników wraz z opisami stanowisk pracy.job_id. SELECT employee.pub_id = publishers. roczną pensję oraz prowizję tych wszystkich sprzedawców. Dla pracowników o job_lvl powyżej 100 podaj ich nazwiska. SELECT * FROM DISCOUNTS LEFT JOIN stores ON discounts. których miesięczna pensja przekracza prowizję.0) "salary" .stor_id. SELECT ename . SELECT * FROM titles INNER JOIN publishers ON titles.comm FROM emp WHERE nvl(sal. Wyniki posortuj według malejących zarobków.stor_id.stor_id = stores. Wybierz nazwiska. --38.stor_id = stores. Połącz dane z tabeli DISCOUNTS i STORE przy pomocy RIGHT JOIN. którzy zostali zatrudnieni w 1980 r.stor_id. Wybierz tytuły oraz nazwy wydawnictw wszystkich książek w kolejności alfabetycznej.stor_id = stores. w których nazwisku występuje ciąg „TH” lub „LL”.jobs. SELECT * FROM DISCOUNTS RIGHT JOIN stores ON discounts.0) ORDER BY sal DESC . --1.job_desc FROM employee INNER JOIN jobs ON employee. --2.job_id = jobs. SELECT * FROM DISCOUNTS INNER JOIN stores ON discounts. STORES WHERE discounts.lname .pub_name ASC. pub_name FROM employee INNER JOIN publishers ON employee. które nie mają jeszcze tantiem.title ORDER BY Ilu_Autorow DESC).0)) AS SREDNIA FROM sales INNER JOIN titles ON titles.stor_id = stores.TITLE_ID = sales. (Poszukaj czy w Oracle można to inaczej wyświetlić – jeden wiersz na tytuł) SELECT titles. --14. Wybrać średnie zarobki tylko tych wydawnictw.COUNT (*) AS Ilu_Autorow FROM titles INNER JOIN titleauthor ON titles. SELECT pub_id . Znajdź ilu współautorów maksymalnie napisało jeden tytuł SELECT MAX (Ilu_Autorow) FROM ( SELECT titles. które zatrudniają więcej niż trzech pracowników.title_id INNER JOIN stores ON sales.TITLE_ID GROUP BY pub_id.title_id = sales.employee. Znajdź datę najpóźniej zatrudnionego pracownika w każdym wydawnictwie SELECT MAX (employee.au_fname . Policz wszystkie książki SELECT COUNT (*) FROM titles.title .pub_id = publishers. --13.title ASC.job_lvl >= 100.hire_date .authors. --rozwijamy do końca zadania: SELECT pub_id .hire_date) FROM employee. --8.title_id INNER JOIN authors ON titleauthor.qty*titles.au_id GROUP BY titles.au_id = authors.authors. authors.au_id = authors.stor_id WHERE stores.title .title FROM titles WHERE titles. SELECT titles..avg(nvl(sales.au_fname ASC.au_lname FROM titles INNER JOIN titleauthor ON titles. Wypisz te książki.pub_id WHERE employee. --12. --11.price. authors. Wypisz książki.title_id = titleauthor.stor_name LIKE 'Bookbeat' OR stores. które są sprzedawane zarówno przez „Bookbeat” i „Eric the Read Books” SELECT titles.royalty IS NULL.title_id INNER JOIN authors ON titleauthor. Podaj dla każdego tytułu wszystkich autorów.au_lname ASC. --10.title_id = titleauthor. --9.publishers.stor_name LIKE 'Eric the Read Books'. pamiętaj by odpowiednio posortować.title FROM titles INNER JOIN sales ON titles.au_id ORDER BY titles. title_id INNER JOIN authors ON titleauthor. --Sprawdzamy ilu pracownikow ma kazde wydawnictwo SELECT pub_id .0)) AS SREDNIA . Dla każdego autora podaj liczbę książek.COUNT (*) AS Ilu_Autorow FROM titles INNER JOIN titleauthor ON titles.count(pub_id) AS ilu_pracownikow FROM sales INNER JOIN titles ON titles. które napisał.TITLE_ID INNER JOIN EMPLOYEE ON titles. Połącz dane z tabel EMP i DEPT przy pomocy warunku złączenia w WHERE.title_id = titleauthor.qty*titles.MIN(discount) FROM discounts GROUP BY STOR_ID.AU_LNAME . --15.AU_LNAME .avg(nvl(sales.title_id) AS Wszystkie . --Dodatkowe --1.TITLE_ID = sales.title .avg(nvl(sales.title_id GROUP BY authors. Podaj wartość książek z każdego kraju. --16.authors. --18..price.pub_id GROUP BY pub_id HAVING count(pub_id) > 3. Sprawdź. SELECT * . czy wszystkie numery książek są rzeczywiście wzajemnie różne.count(pub_id) AS ilu FROM EMPLOYEE GROUP BY pub_id HAVING count(pub_id) > 3 UNION ALL SELECT pub_id .TITLE_ID = sales.MAX(discount) . --19. SELECT COUNT (titles.au_id = titleauthor. Wypisz książki napisane przez 3 lub więcej współautorów. SELECT STOR_ID .au_id INNER JOIN titles ON titleauthor.AU_FNAME ORDER BY Ile_Ksiazek DESC.title_id) AS Wszystkie_Bez_Powtorzen FROM TITLES.TITLE_ID GROUP BY pub_id.qty*titles.authors.title_id = titles.COUNT (DISTINCT titles.pub_id = employee. Oblicz średnia cenę pozycji dla każdego wydawnictwa.title HAVING COUNT(1)>=3. --17. SELECT titles.AU_FNAME .price. --20. SELECT authors.0)) AS SREDNIA FROM sales INNER JOIN titles ON titles.COUNT (*) AS Ile_Ksiazek FROM authors INNER JOIN titleauthor ON authors.au_id = authors.au_id GROUP BY titles. Znajdź różnicę miedzy najwyższą i najniższa zniżką w każdym ze sklepów. mgr FROM emp INNER JOIN dept ON emp.nvl(sal.deptno = dept. Wybierz pracowników zatrudnionych w Dallas.loc . --6. --7.nvl(mgr. Wybierz informacje o pracownikach. których zarobki odpowiadają klasie zarobkowej 3. --2. SELECT * FROM emp INNER JOIN salgrade ON emp. --9. --4.0) .DEPTNO WHERE sal > 1500. SELECT * FROM dept INNER JOIN emp ON dept.0) .dname . nazwy działów i stopnie zaszeregowania. SELECT ename .deptno. miejsca usytuowania ich departamentów oraz nazwy tych departamentów.deptno = emp.deptno ORDER BY ename ASC. SELECT * FROM emp INNER JOIN dept ON emp. --5. Dla pracowników o miesięcznej pensji powyżej 1500 podaj ich nazwiska.deptno = dept.emp.nvl(job.deptno WHERE dept.deptno.emp WHERE dept. --3. SELECT ename . Utwórz listę pracowników podając ich nazwisko. pensję i stopień zaszeregowania. --8.loc = 'DALLAS'. zawód. Wybierz nazwiska pracowników.FROM dept . .DEPTNO .deptno = emp. SELECT ENAME . Połącz dane z tabel EMP i DEPT przy pomocy INNER JOIN.dname FROM emp INNER JOIN dept ON emp.deptno. SELECT ename .dname FROM emp INNER JOIN dept ON emp. SELECT ENAME .deptno.deptno = dept.DEPTNO = dept.deptno = dept. Wybierz nazwiska oraz nazwy departamentów wszystkich pracowników w kolejności alfabetycznej.0) FROM emp.sal BETWEEN losal AND hisal WHERE grade = 3.dname FROM emp INNER JOIN dept ON emp. Wybierz nazwiska wszystkich pracowników wraz z numerami i nazwami departamentów w których są zatrudnieni. empno = P. --11. Wybierz pracowników (nazwisko. aby dane działu pojawiły się. numer działu) z działu 30 i 20. SELECT K. Posortuj według nazwiska szefa.sal. --12. Wypisz stanowiska występujące w dziale 10 a nie występujące w dziale 30. Dla każdego pracownika wypisz jego nazwisko oraz nazwisko jego szefa. SELECT * FROM dept LEFT JOIN emp ON dept. Wybierz pracowników. SELECT ename . Wypisz dane wszystkich działów oraz ich pracowników tak. Wypisz stanowiska występujące zarówno w dziale 10 jak i 30. --17.K.deptno FROM emp WHERE deptno = 20 ORDER BY deptno ASC .--10. Wypisz dane wszystkich działów oraz ich pracowników tak.sal Pensja_Pracownika FROM emp K INNER JOIN emp P ON K.sal < K. nawet jeśli nie ma w dziale żadnego pracownika. --14.ename ASC. --15.P.deptno ORDER BY dept.sal Pensja_Szefa . --13.ename Szef.ename Szef .deptno FROM emp WHERE deptno = 30 UNION ALL SELECT ' ' . SELECT * FROM dept RIGHT JOIN emp ON dept. którzy zarabiają mniej od swoich kierowników. aby dane pracownika pojawiły się.mgr WHERE P.ename ASC. SELECT K.ename Pracownik FROM emp K .Wypisz dział 20 bez nazwisk.deptno = emp.deptno = emp. SELECT DISTINCT job FROM emp WHERE deptno = 10 OR deptno = 30.deptno ORDER BY ename ASC.P. nawet jeśli pracownik nie jest przypisany do działu. --16. P.ename Pracownik . SELECT job FROM emp WHERE deptno = 10 MINUS SELECT job FROM emp WHERE deptno = 30.emp.deptno ASC . Wypisz stanowiska występujące w dziale 10 oraz 30. SELECT job FROM emp WHERE deptno = 10 INTERSECT SELECT job FROM emp WHERE deptno = 30. --21. pamiętaj o prowizji. Znajdź ilu pracowników zatrudniono w departamencie 20. 0)) Maksymalny_zarobek FROM emp GROUP BY job. 0)) sredni_zarobek FROM emp GROUP BY job.empno = P. --18. 0)) sredni_miesieczny_zarobek . SELECT MIN(sal+nvl(comm.0))) srednie_roczne_zarobki FROM emp . Znajdź średnie miesięczne pensje oraz średnie roczne zarobki dla każdego stanowiska. SELECT avg(sal) sredni_zarobek FROM emp.avg(sal+nvl(comm.job . --19. Oblicz średnie zarobki na każdym ze stanowisk pracy. --20.job ASC. SELECT job . SELECT job .ename ASC. 0)) sredni_zarobek FROM emp GROUP BY deptno HAVING COUNT(deptno) > 3 ORDER BY deptno ASC.INNER JOIN emp P ON K. --22. Wybierz tylko te stanowiska. --26.mgr ORDER BY K. SELECT job . 0)) sredni_zarobek FROM emp WHERE job <> 'MANAGER' GROUP BY job.COUNT(deptno) AS ilu_pracownikow .avg(sal+nvl(comm. na których średni zarobek wynosi 3000 lub więcej. 0)) sredni_zarobek FROM emp GROUP BY job HAVING avg(sal+nvl(comm. 0)) >= 3000. Wybierz średnie zarobki tylko tych departamentów.avg(sal+nvl(comm. --23. 0)) Minimalna_Pensja_Jako_Clerk FROM emp WHERE JOB = 'CLERK'. które zatrudniają więcej niż trzech pracowników.job ORDER BY deptno ASC . Oblicz średni zarobek w firmie.avg(12*(sal+nvl(comm.avg(sal+nvl(comm. 0)) sredni_zarobek FROM emp GROUP BY deptno .avg(sal+nvl(comm. --24. Oblicz średnie zarobki na każdym ze stanowisk pracy w każdym departamencie.max(sal+nvl(comm.avg(sal+nvl(comm. --25. SELECT COUNT (*) Ilosc_pracownikow_w_20 FROM emp WHERE deptno = 20. --27. Dla każdego stanowiska oblicz maksymalne zarobki. SELECT job . Oblicz średnie zarobki na każdym ze stanowisk pracy z wyjątkiem stanowiska MANAGER. Znajdź minimalne zarobki na stanowisku CLERK. SELECT deptno . SELECT job . SELECT deptno . --31.count(distinct empno) AS ilu_unikalnych_pracownikow FROM emp.sal BETWEEN losal AND hisal WHERE grade = 2.sal BETWEEN losal AND hisal GROUP BY grade ORDER BY grade ASC. ! SELECT grade .sal) > 999 ORDER BY min(P.sal) Emp_Min_Sal FROM emp P INNER JOIN emp K ON P.deptno = dept.empno GROUP BY K.GROUP BY job. które wartości zarobków powtarzają się. SELECT count(empno) AS ilu_pracownikow . SELECT K. 0)) . --33. Podaj średni zarobek pracowników z drugiej klasy zarobkowej. --36.empno GROUP BY K.min(P. --28.ename . SELECT deptno .count(deptno) AS Ilu_pracownikow FROM emp GROUP BY deptno HAVING count(deptno) > 3 ORDER BY deptno ASC. SELECT K.SAL). Wyeliminuj grupy o minimalnych zarobkach niższych niż 1000.deptno WHERE loc = 'DALLAS'. czy wszystkie numery pracowników są rzeczywiście wzajemnie różne. Sprawdź. SELECT max(sal+nvl(comm. --32.ename .ename) Ilu_kierownik_ma_podwladnych FROM emp P INNER JOIN emp K ON P.max(sal) Maksymalna_pensja FROM emp INNER JOIN salgrade ON emp.count(K. select sal . --34. Znajdź różnicę miedzy najwyższą i najniższa pensją.mgr = K. SELECT avg(sal+nvl(comm. Znajdź departamenty zatrudniające powyżej trzech pracowników. Uporządkuj według pensji.ename HAVING min(P. --35. Sprawdź ilu podwładnych ma każdy kierownik.ename Manager_Name . Wypisz ilu pracowników ma dział mający siedzibę w DALLAS. SELECT count(empno) Woring_in_Dallas FROM emp INNER JOIN dept ON emp.0)) Sredni_zarobek_z_drugiej_klasy FROM emp INNER JOIN salgrade ON emp.mgr = K. --29.min(sal+nvl(comm.count(sal) Ile_Osob_tyle_zarabia FROM emp GROUP BY sal HAVING count(*) > 1 ORDER BY sal. 0)) Roznica_w_pensjach FROM emp. Podaj maksymalne zarobki dla każdej klasy zarobkowej. --30. Podaj najniższe pensje wypłacane podwładnym swoich kierowników. Sprawdź. . Podaj sumę.0)) Suma_zarobkow_z_1_klasy FROM emp INNER JOIN SALGRADE ON emp. SELECT sum(sal+nvl(comm. --37.sal BETWEEN losal AND hisal WHERE grade = 1.ename) DESC.ORDER BY count(K. którą zarabiają razem wszyscy pracownicy z pierwszej klasy zarobkowej.
Copyright © 2024 DOKUMEN.SITE Inc.