/*1. Podać nazwisko, stanowisko pracowników, którzy w nazwie stanowiska mają litery NA oraz w nazwie lokalizacjii litery LL. Użyć: like, substr, instr oraz upper, lower w celu porównania bez rozróżniania wielkości liter.*/ select rpad(ename,20,'*|'),job,loc from emp e,dept d where e.deptno=d.deptno and loc like '%LL%' and job like '%NA%'; /*2. Wynik zadania 1. przedstawić w postaci zdania. Użyć funkcji: LOWER,UPPER,INITCAP,LPAD,RPAD.*/ select (rpad(initcap(ename),length(ename)+14,' pracuje jako ')||lower(job)||lpad(loc,length(loc)+11,' w mieście ')) as "kto gdzie pracuje" from emp e,dept d where e.deptno=d.deptno and loc like '%LL%' and job like '%NA%'; /*3. Podać nazwiska pracowników, których zarobki powiększone o 25% przekraczają 3000. Wynik zaokrąglić do najbliższej liczby całkowitej w górę oraz podać w drugiej kolumnie tylko wartość całkowitą.*/ select ename,round((sal+nvl(comm,0))*5/4),round((sal+nvl(comm,0))*5/4,-1) from emp where (sal+nvl(comm,0))*5/4>3000; /*4. Podać numery, nazwiska, całkowite zarobki pracowników przybliżone z góry i od dołu za pomocą funcji.0*/ select empno,ename,round(sal+nvl(comm,0)),trunc(sal+nvl(comm,0)-1) from emp; /*5. Sprawdzić działanie funkcji matematycznych POWER, SQRT, ABS, MOD.*/ /*6. Wyświetlić wynagrodzenia pracowników podniesione do kwadratu.*/ select ename,power(sal+nvl(comm,0),2) from emp; /*7. Jaka data będzie za 100 dni.*/ select sysdate,sysdate+100 from dual; /*8. Ile miesięcy pracują poszczególni pracownicy.*/ select ename,round(months_between(sysdate,hiredate)) as "ilosc_miesięcy",sysdate,hiredate from emp; /*9. Jaką datę będziemy mieli za 10 miesięcy.*/ select sysdate,add_months(sysdate,10) as "za 10 miechów" from dual; /*10. Podać datę ostatniego dnia bieżącego miesiąca.*/ select LAST_DAY(SYSDATE) from dual; /*11. Podać odpowiedź, w postaci zdania, który pracownik nie posiada zwierzchnika.*/ select lpad(initcap(ename),length(ename)+21 ,'Pracownik o nazwisku ')||' nie posiada żadnego zwierzchnika' as "Zdanie" from emp where mgr is null; /*12. Pobrać 4 pierwsze rekordy z tabeli z widełkami wynagrodzeń. Sprawdzić wpływ klauzuli Order by na wynik zapytania.*/ select * from salgrade where grade<=4 order by hisal; /*13. Dla każdego pracownika podać długość jego nazwiska.*/ select ename,length(ename) as "dugosc nazwiska" from emp; /*14. Podać nazwiska pracowników zapisane z dużej litery a stanowiska zapisane małymi literami.*/ select INITCAP(ename),lower(job) from emp; /*15. Zamienić wszystkie literki E w imionach pracowników na a przy pomocy funkcji translate.*/ select ename,translate(ename,'E','a') from emp; /*16. Uzupełnić z prawej strony wynik kolumny dname znakami x do 15 znaków w polu.*/ select rpad(dname,15,'8=>') from dept; /*17. Dla każdego departamentu podać lokalizację z pominiętym ostatnim znakiem.*/ select dname,rpad(loc,length(loc)-1,'s') from dept; /*18. Podać trzy sposoby wyszukania pracownika o nazwisku rozpoczynającym się od liter B*/ select ename from emp where ename like 'B%'; select ename from emp where rpad(ename,1)='B'; select ename from emp where instr(ename,'B')=1; /*19. Podać trzy pierwsze cyfry numeru pracownika, nazwisko, rok zatrudnienia osób z 1 stopniem płacowym, pracujących w New York*/ select rpad(empno,3),ename,hiredate,grade,loc from emp e,dept d,salgrade where e.deptno=d.deptno and grade=1 and sal>=losal and sal<=hisal and loc='NEW YORK';