select * from osoby union select * from osoby; - sumuje dwa typy --------------------------------------------------------------------------- select * from osoby minus select * from osoby; - usuwa wspolne wiersze --------------------------------------------------------------------------- select * from osoby intersect select * from osoby; --------------------------------------------------------------------------- select o.*, sysdate - d_ur wiek from osoby o; - pokazuje wiek w dniach trunc (sysdate - d_ur) przycina round (sysdate - d_ur) zaokkragla liczbe --------------------------------------------------------------------------- Funkcje agregujace: select avg(pensja) from zatrudnienia; - pokazuje w jednej kolumnie srednia pensji AVG() SUM() MAX() MIN() CoUNT() - zlicza ------------------------------------------------------------------------------------ select avg(pensja) s, max(pensja) m, count(*) from zatrudnienia; - wypisuje srednia. max i zlicza ilosc wierszy ------------------------------------------------------------------------------------ cout(do) zlicza kolumny rozne od null ------------------------------------------------------------------------------------ select avg(pensja) s, max(pensja) m, count(*) from zatrudnienia group by id_w; - grupuje wedlug wydzialow ------------------------------------------------------------------------------------- select avg(pensja) s, max(pensja) m, count(id_z), id_w from zatrudnienia group by id_w, id_s; ------------------------------------------------------------------------------------ having - odpowiednik were w funkcjach grupujacych ------------------------------------------------------------------------------------ select avg(pensja) s, max(pensja) m, count(id_z), id_w, id_s from zatrudnienia group by id_w, id_s having id_w=3; - dodatkowo ogranicza do 3, wydzialu ------------------------------------------------------------------------------------ select avg(pensja) s, max(pensja) m, count(id_z), id_w, id_s from zatrudnienia where do is null group by id_w, id_s having id_w=3; wywala komorki gdzie w kolumnie do jest NULL ------------------------------------------------------------------------------------- having max(pensja)>3000; - wypisuje powyzej 3000 ------------------------------------------------------------------------------------- select o.nazwisko, z.od, z.do, z.pensja, o.id_os from osoby o, zatrudnienia z where o.id_os = z.id_os; zlancza typy osoby i zatrudnienia ------------------------------------------------------------------------------------- select o.nazwisko, z.od, z.do, z.pensja, o.id_os from osoby o, zatrudnienia z where o.id_os(+) = z.id_os; union select o.nazwisko, z.od, z.do, z.pensja, o.id_os from osoby o, zatrudnienia z where o.id_os = z.id_os(+); uzupelnia tam gdzie jest null w kolumnie od, do -------------------------------------------------------------------------------------- select o.nazwisko, z.od, z.do, z.pensja, o.id_os from osoby o, zatrudnienia z where o.id_os = z.id_os and z.do is null; wyswietla tych ktorzy nadal pracuja --------------------------------------------------------------------------------------- select o.nazwisko, z.od, z.do, z.pensja, w.nazwa from osoby o, zatrudnienia z, wydzialy w where o.id_os = z.id_os and z.do is null and w.id_w = z.id_w; pokazuje dodatkowo nazwy wydzialow --------------------------------------------------------------------------------------- select o.nazwisko, z.od, z.do, z.pensja, w.nazwa from osoby o join zatrudnienia z on o.id_os=z.id_os join wydzialy w on w.id_w=z.id_w where z.do is null; -------------------------------------------------------------------------------------- select o.nazwisko, z.od, z.do, z.pensja from osoby o join zatrudnienia z on o.id_os=z.id_os where z.do is null; laczy osoby z zatrudnieniem w jedno
miaka