SQL> SPOOL currently spooling to ülesanne_02.lst --Leidke tabelist kandidaadid need tütarlapsed (töödeldes isikukoodi) , kelle emakeeleeksami tulemus on üle 60 punkti. SQL> SELECT * FROM kandidaadid WHERE id LIKE '4%' AND EMAKEEL > 60; ID --------------------------------- EESNIMI ------------------------------------------------------------ PERENIMI -------------------------------------------------------------------------------- MATEMAATIKA VOORKEEL EMAKEEL ----------- ---------- ---------- 48612104788 Pirjo Kask 55 67 90 ID --------------------------------- EESNIMI ------------------------------------------------------------ PERENIMI -------------------------------------------------------------------------------- MATEMAATIKA VOORKEEL EMAKEEL ----------- ---------- ---------- 48606160001 Mari Maasikas 85 89 94 ID --------------------------------- EESNIMI ------------------------------------------------------------ PE
SQL 3. Ülesanne 1. Logige Oracle’i andmebaasi “testdata” külge kasutajanimega scott ja parooliga tiger. 2. Koostage tabeli kandidaadid abil horisontaalne tulpdiagramm: iga nime järel on sümbolite “*” jada; iga “*” vastab kümnele punktile võõrkeele eksamil (ümardatult kümnega jaguva arvuni). EESNIMI PERENIMI VÕÕRKEEL DIAGRAMM -------------------- -------------------- ------------------------- Gert Kuusk 37 **** Taavi Kask 50 ***** Pavel Mänd 38 **** Soovitus.Enne päringu läbiviimist andke järgnev sqlplus-i formaatimiskorraldus: SQL> COLUMN diagramm FORMAT A12 (eeldades, et kasutate päringus aliasnime diagramm). SELECT EESNIMI, PERENIMI, VOORKEEL, LPAD(' ',ROUND(VOORKEEL/10,0)+1,'*') AS DIAGRAMM FROM kandidaadid; 3. Leidke iga kandidaadi vanus (täisarvuna) a) aastates SELECT EESNIMI, PERENIMI, TRUNC(MONTHS_BETWEEN(sysdate, to_date(substr(id, 2, 6), 'RR.MM.DD'))/12,0) AS VANUS_AASTATES
lesanne 1------------------------------------------------------------------------------- -- sqlplus scott/tiger@testdata describe kandidaadid insert into kandidaadid values ('Stanislav', 'Tsvetajev', '38609140224', 60, 70, 80); update kandidaadid set eesnimi='Stas' where isikukood=38609140224; select * from kandidaadid where eesnimi = 'Stas'; delete from kandidaadid where eesnimi = 'stas'; lesanne 2------------------------------------------------------------------------------- -- sqlplus scott/tiger@testdata select eesnimi, perenimi, emakeel from kandidaadid where isikukood like '4%' and emakeel >60; select eesnimi, perenimi, to_date(substr(isikukood,2,6),'YYMMDD') as sunniaeg from kandidaadid where to_date(substr(isikukood, 4, 4), 'mmdd')> sysdate order by to_date(substr(isikukood, 4, 4), 'mmdd'); lesanne 3----------------------------------------------------------------- sq
SQL> SPOOL currently spooling to ülesanne_05.lst SQL> --Leidke tabelite yliopilased, koduylesanded, oppeained abil iga tudengi keskmine “punktisaak” koduste tööde eest SQL> SELECT y.eesnimi, y.perenimi, round(avg(k.punktid),1) AS kesk_punkte FROM yliopilased y, koduylesanded k where y.id=k.yliopilase_id GROUP BY y.eesnimi, y.perenimi; EESNIMI PERENIMI KESK_PUNKTE ------------ ------------ ----------- Katrin Kask 5.4 Salme Saar 4.1 Liina Vaher 7.8 Kairi M„nd 6.6 SQL> --Samade tabelite põhjal leidke, mitu tööd on oracle-aine ülesannete kohta saadetud. Grupeerige ülesande numbri kaupa SQL> SELECT k.too_nr, count(k.failinimi) AS arv FROM koduylesanded k, oppeained o WHERE o.kood = k.kursusekood AND o.nimetus = 'Oracle: SQL ja PL/SQL' GROUP BY k.too_nr; TOO_NR ARV ------ ---------- 1 4 2 2 3 2 SQL> SELECT sunniaasta
SQL> SPOOL currently spooling to ülesanne_03.lst --Soovitus.Enne päringu läbiviimist andke järgnev sqlplus-i formaatimiskorraldus SQL> COLUMN eesnimi FORMAT A15; SQL> COLUMN perenimi FORMAT A15; SQL> COLUMN voorkeel FORMAT 999; SQL> COLUMN diagramm FORMAT A12; --Koostage tabeli kandidaadid abil horisontaalne tulpdiagramm: iga nime järel on sümbolite "*" jada; iga "*" vastab kümnele punktile võõrkeele eksamil (ümardatult kümnega jaguva arvuni). SQL> SELECT eesnimi, perenimi, voorkeel, (LPAD('*', ROUND(voorkeel/10, 0), '*')) AS diagramm FROM kandidaadid; EESNIMI PERENIMI VOORKEEL DIAGRAMM --------------- --------------- -------- ------------ Pirjo Kask 67 ******* Mari Maasikas 89 ********* Liina Vaarikas 85 ********* KRISTJAN MAAPALU 41 **** GERD SIIMON 48 ***** TANEL VIHMANN 45 ***** MAURI
Ülesanne 5 1. Leidke tabelite lepikult.yliopilased, lepikult.koduylesanded ja lepikult.oppeained abil iga tudengi keskmine “punktisaak” koduste tööde eest. SELECT y.eesnimi, y.perenimi, ROUND(AVG(k.punktid), 1) AS "Kesk. punkte" FROM lepikult.yliopilased y, lepikult.koduylesanded k, lepikult.oppeained o WHERE y.id = k.yliopilase_id AND o.kood = k.kursusekood GROUP BY y.eesnimi, y.perenimi; 2. Samade tabelite põhjal leidke, mitu tööd on oracle-aine ülesannete kohta saadetud. Grupeerige ülesande numbri kaupa: SELECT k.too_nr AS "TÖÖ NR.", COUNT(k.kursusekood) AS "ARV" FROM lepikult.oppeained o, lepikult.koduylesanded k WHERE o.kood=k.kursusekood AND lower(o.nimetus) LIKE 'oracle%' GROUP BY k.too_nr; 3. Uurige tabeli scott.kandidaadid abil välja, millisel aastal sündinud naisterahvaste emakeele keskmine hinne on kõige kõrgem. SELECT Aasta, ROUND(AVG(emakeel), 0) AS "Keskmine Hinne" FROM (SELECT substr(to_date(substr(id, 2
4. Ülesanne 1. Logige Oracle’i andmebaasi “testdata” külge kasutajanimega scott ja parooliga tiger. 2. Koostage tabelite lepikult.yliopilased, lepikult.koduylesanded, lepikult.oppeained abil kursuse “Oracle” kodutööde andmed. SELECT y.eesnimi, y.perenimi, to_char(k.kuupaev, 'DD.MM.YYYY') AS "Kuupäev", k.too_nr as "ÜL.NR.", k.punktid AS "Punkte", k.failinimi AS "Fail" FROM lepikult.yliopilased y, lepikult.koduylesanded k WHERE y.id = k.yliopilase_id AND k.kursusekood = 'I319'; 3. Koostada nende tudengite nimekiri, kes ei ole saatnud üheski õppeaines ainsatki kodutööd. SELECT y.eesnimi, y.perenimi FROM lepikult.yliopilased y LEFT JOIN lepikult.koduylesanded k ON y.id = k.yliopilase_id WHERE k.yliopilase_id IS NULL; 4. Fikseerige tabelis „sugupuu” üks nimi (näiteks nii: …. WHERE e.nimi = ‘Karin’ ….) ja leidke kõik tema lapselapsed. SELECT * FROM sugupuu WHERE isakood IN (SELECT kood FROM
Ülesanne 11 1. Kirjutage PL/SQL-programm, mis leiab tabelist kandidaadid, mitu inimest on sündinud 1982. a. 1. kuus, 1982. a. 2. kuus jne. kuni 1984.a. 12. kuus --- ylesanne11-1.psql ---- SET SERVEROUTPUT ON declare alates_aasta constant integer := 82; kuni_aasta constant integer := 84; alates_kuu constant integer := 1; kuni_kuu constant integer := 12; tudengite_arv integer; begin for aasta in alates_aasta .. kuni_aasta loop for kuu in alates_kuu .. kuni_kuu loop select count(*) into tudengite_arv from scott.kandidaadid where substr(ID,2,2) = aasta and substr(ID,4,2) = kuu; dbms_output.put_line('19' || aasta || '. a. ' || kuu || '. kuus on sündinud ' || tudengite_arv || ' kandidaati.'); end loop; end loop; end; / --- ylesanne11-1.ps
Kõik kommentaarid