Adatb – 4. gyakorlat

Kik azok a dolgozók, akik 1982.01.01 után léptek be a céghez?

select * from dolgozo where belepes >  TO_DATE('1982.01.01', 'YYYY-MM-DD');

[collapse]
Adjuk meg azon dolgozókat, akik nevének második betűje A.

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

[collapse]
Adjuk meg azon dolgozókat, akik nevében van legalább két L betű.

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

[collapse]
Adjuk meg a dolgozók nevének utolsó három betűjét.

SELECT substr(dnev, -3, 3) from dolgozo;

[collapse]
Adjuk meg a dolgozók fizetéseinek négyzetgyökét két tizedesre, és ennek egészrészét.

SELECT fizetes, round(sqrt(fizetes),2), round(sqrt(fizetes),0) from dolgozo;

[collapse]
Adjuk meg, hogy hány napja dolgozik a cégnél ADAMS és milyen hónapban lépett be.

SELECT TRUNC(SYSDATE - belepes) napok, TO_CHAR(belepes, 'month') honap FROM dolgozo WHERE dnev='ADAMS';

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

select * from dolgozo d1, dolgozo d2 where d1.fonoke=d2.dkod and length(d1.dnev)=length(d2.dnev);

[collapse]
Listázzuk ki a dolgozók nevét és fizetését, valamint jelenítsük meg a fizetést grafikusan úgy, hogy a fizetést 1000 Ft-ra kerekítve, minden 1000 Ft-ot egy # jel jelöl.

SELECT dnev, fizetes, rpad(' ', round((fizetes/1000),0)+1, '#') as grafika FROM dolgozo ORDER BY 3 desc;

[collapse]
Listázzuk ki azoknak a dolgozóknak a nevét, fizetését, jutalékát, és a jutalék/fizetés arányát, akiknek a foglalkozása eladó (salesman). Az arányt két tizedesen jelenítsük meg.

SELECT dnev, fizetes, jutalek, TO_CHAR(NVL(jutalek, 0)/fizetes, '990.99') AS arany FROM dolgozo WHERE UPPER(foglalkozas) IN ('SALESMAN') ORDER BY arany DESC;

[collapse]

SZERET

Kik szeretnek minden gyümölcsöt?

(select nev from szeret) MINUS( select nev from ((select * from (select nev from szeret) gy, (select gyumolcs from szeret) n) MINUS (select * from szeret)));

[collapse]
Kik azok, akik legalább azokat a gyümölcsöket szeretik, mint Micimackó?

(select nev from szeret) MINUS(
select nev from ((select * from (select nev from szeret) gy, (select gyumolcs from szeret where nev='Micimackó') n)
  MINUS (select * from szeret)));

[collapse]
Kik azok, akik legfeljebb azokat a gyümölcsöket szeretik, mint Micimackó?

(select nev from szeret) MINUS(
select nev from ((select * from szeret)
MINUS (select * from (select nev from szeret) gy, (select gyumolcs from szeret where nev='Micimackó') n)));

[collapse]
Kik azok, akik pontosan azokat a gyümölcsöket szeretik, mint Micimackó?

előző kettő metszete

[collapse]

Összesítő függvények, csoportképzés

Mekkora a maximális fizetés a dolgozók között?

SELECT max(fizetes) FROM dolgozo;

[collapse]
Mennyi a dolgozók összfizetése?

SELECT sum(fizetes) FROM dolgozo;

[collapse]
Mennyi a 20-as osztályon az átlagfizetés?

SELECT avg(fizetes) FROM dolgozo where oazon=20;

[collapse]
Adjuk meg, hogy hány különböző foglalkozás fordul elő a dolgozók között.

SELECT count(distinct foglalkozas) FROM dolgozo;

[collapse]
Hány olyan dolgozó van, akinek a fizetése több mint 2000

SELECT count(*) FROM dolgozo where fizetes > 2000;

[collapse]
Adjuk meg osztályonként az átlagfizetést (oazon, atl_fiz).

SELECT oazon, avg(fizetes) FROM dolgozo group by oazon;

[collapse]
Adjuk meg osztályonként a telephelyet és az átlagfizetést (oazon, telephely, atl_fiz).

SELECT o.telephely, avg(d.fizetes) FROM dolgozo d, osztaly o where d.oazon=o.oazon group by o.oazon, o.telephely;

[collapse]
Adjuk meg, hogy az egyes osztályokon hány ember dolgozik.

SELECT count(*) FROM dolgozo group by oazon;

[collapse]

Leave a Reply