Kihagyás

4. gyakorlat

1-es indexelés, for whatever reason

  • UPPER
  • LOWER
  • LENGTH
  • ROUND/TRUNC/MOD
  • SYSDATE - rendszeridő
  • TO_CHAR(sysdate, 'yyyy-Month-dd')
  • MONTHS_BETWEEN
  • ADD_MONTHS
  • NEXT_DAY
  • LAST_DAY

FELADATOK

1. feladat

Kik azok, akik 1982. 01. 01. után léptek be a céghez.

SELECT dnev
FROM dolgozo
WHERE belepes > TO_DATE('1982.01.01', 'YYYY.MM.dd');

2. feladat

Adjuk meg azon dolgozók nevét, akiknek nevének második betűje nagy A betű.

két megoldás szükséges: függvényes és függvény nélküli

SELECT dnev
FROM dolgozo
WhERE SUBSTR(dnev, 2, 1)='A';

SELECT *
FROM dolgozo
WHERE dnev LIKE '_A%';

3. feladat

Adjuk meg azon dolgozók nevét, akik nevében van legalább 2 'L' betű.

Szintén két megoldás

SELECT dnev
FROM dolgozo
WHERE dnev LIKE '%L%L%';

SELECT dnev
FROM dolgozo
WHERE INSTR(dnev, 'L', 1, 2) > 0;

4. feladat

Adjuk meg a dolgozók nevét, fizetését, és ábrázoljuk a fizetésüket úgy, hogy a fizetést $1000-ra kerekítve, minden $1000-t egy '#' jel jelöl.

SELECT dnev, fizetes, NVL(RPAD('#', TRUNC(fizetes, -3)/1000, '#'), ' ') grafikus_abrazolas
FROM dolgozo
ORDER BY fizetes ASC;

5. feladat

Adjuk meg, hogy milyen napra esett KING belépési dátuma hónapjának utolsó napja.

SELECT to_char(LAST_DAY(belepes), 'Day')
FROM dolgozo
WHERE dnev LIKE 'KING';

6. feladat

Adjuk meg azokat a (név, főnök) párokat, ahol a két ember neve ugyanannyi betűből áll.

SELECT '(' || d1.dnev || ', ' || d2.dnev || ')' paros
FROM dolgozo d1, dolgozo d2
WHERE d1.fonoke = d2.dkod AND
length(d1.dnev)=length(d2.dnev);

7. feladat

ÚJ TÁBLA

CREATE TABLE fiz_kategoria AS SELECT * FROM nikovits.fiz_kategoria;

Adjuk meg azon osztályok nevét és telephelyét, amelynek van 1-es fizetési kategóriájú dolgozója.

SELECT onev, telephely FROM osztaly
WHERE oazon in (SELECT distinct oazon
FROM dolgozo, fiz_kategoria
WHERE also<=fizetes AND fizetes<=felso AND kategoria=1);