MISTO | CAS | VSTUPNE | DIVAKU |
---|---|---|---|
Kostel sv. Antonína, Strossmayerovo nám. | 02.02.2005 | 80 | 102 |
SQL>
SQL>
SQL> -- Seznam zpěváků, jejichž vedoucím je Alena Havlíková.
SQL>
SQL>
SQL> SELECT Zpevak.*
2 FROM Zpevak JOIN (
3 SELECT zkratka FROM Vedeni NATURAL JOIN Zpevak
4 WHERE jmeno='Alena' AND prijmeni='Havlíková'
5 ) ON hlas=zkratka;
RC | JMENO | PRIJMENI | ADRESA | TELEFON | HLAS | |
---|---|---|---|---|---|---|
5953014321 | Alena | Havlíková | S | |||
7263225148 | Jana | Rinkeová | S | |||
7061135522 | Pavla | Kohlová | S | |||
6457021234 | Lenka | Pašková | S |
SQL>
SQL>
SQL> -- Stejné zadání jako předchozí, nyní s poddotazem v klauzuli WHERE.
SQL>
SQL> SELECT *
2 FROM Zpevak
3 WHERE hlas = (
4 SELECT zkratka FROM Vedeni NATURAL JOIN Zpevak
5 WHERE jmeno='Alena' AND prijmeni='Havlíková'
6 );
RC | JMENO | PRIJMENI | ADRESA | TELEFON | HLAS | |
---|---|---|---|---|---|---|
5953014321 | Alena | Havlíková | S | |||
7263225148 | Jana | Rinkeová | S | |||
7061135522 | Pavla | Kohlová | S | |||
6457021234 | Lenka | Pašková | S |
SQL>
SQL>
SQL> -- Názvy všech skladeb A. Dvořáka v repertoiru.
SQL>
SQL> SELECT nazev
2 FROM Skladba NATURAL JOIN Autorstvi NATURAL JOIN Skladatel
3 WHERE jmeno='Antonín' AND prijmeni='Dvořák';
NAZEV |
---|
Mše D dur |
Napadly písně |
Hymnus |
SQL>
SQL>
SQL> -- Seznam zpěváků, kteří nemají zapůjčeny šaty.
SQL>
SQL> SELECT * FROM Zpevak
2 MINUS
3 SELECT Zpevak.*
4 FROM Zpevak JOIN Zapujcka_satu
5 ON Zpevak.RC = Zapujcka_satu.RC;
RC | JMENO | PRIJMENI | ADRESA | TELEFON | HLAS | |
---|---|---|---|---|---|---|
4951032446 | Jiřina | Zámostná | A | |||
5901012681 | Jan | Havlík | B | |||
7061135522 | Pavla | Kohlová | S |
SQL>
SQL>
SQL> -- Stejné zadání jako předchozí, řešení pomocí poddotazu.
SQL>
SQL> SELECT *
2 FROM Zpevak
3 WHERE RC NOT IN (SELECT RC FROM Zapujcka_satu);
RC | JMENO | PRIJMENI | ADRESA | TELEFON | HLAS | |
---|---|---|---|---|---|---|
7061135522 | Pavla | Kohlová | S | |||
4951032446 | Jiřina | Zámostná | A | |||
5901012681 | Jan | Havlík | B |
SQL>
SQL>
SQL> -- Seznam dosud neprovedených skladeb (nebyly na programu žádného koncertu), včetně autorů.
SQL>
SQL> SELECT jmeno, prijmeni, nazev
2 FROM (
3 SELECT id, nazev FROM Skladba
4 MINUS
5 SELECT id, nazev FROM Skladba
6 NATURAL JOIN Cast_programu NATURAL JOIN Koncert
7 ) LEFT JOIN Autorstvi USING (id)
8 LEFT JOIN Skladatel USING(jmeno, prijmeni);
JMENO | PRIJMENI | NAZEV |
---|---|---|
Antonín | Dvořák | Napadly písně |
Antonín | Dvořák | Hymnus |
Johann Sebastian | Bach | Chorál |
Wolfgang Amadeus | Mozart | Ave verum corpus |
Franz Xaver | Gruber | Tichá noc |
Martin | Grobár | Tichá noc |
Jakub Jan | Ryba | Spi, spi, neviňátko |
Steel Away | ||
Nobody knows | ||
Ride the Chariot | ||
Soon Ah Will Be Done |
11 rows selected.
SQL>
SQL>
SQL>
SQL> -- Seznam vícedílných skladeb.
SQL>
SQL> SELECT jmeno, prijmeni, nazev
2 FROM (SELECT * FROM Skladba WHERE id IN (SELECT id FROM Cast_skladby)
3 )LEFT JOIN Autorstvi USING (id)
4 LEFT JOIN Skladatel USING(jmeno, prijmeni);
JMENO | PRIJMENI | NAZEV |
---|---|---|
Antonín | Dvořák | Mše D dur |
Bohuslav | Martinů | Čtyři písně o Marii |
Jakub Jan | Ryba | Česká mše vánoční |
Jan | Hanuš | Flos florum |
Claude | Debussy | Trois chansons |
SQL>
SQL>
SQL> -- Program koncertu 18. 1. 2005.
SQL>
SQL> ALTER Session SET NLS_DATE_FORMAT='DD.MM.YYYY';
Session altered.
SQL> SELECT jmeno, prijmeni, nazev
2 FROM Skladatel
3 JOIN Autorstvi using (jmeno, prijmeni)
4 JOIN Skladba using (id)
5 JOIN Cast_programu using (id)
6 JOIN Koncert using (misto, cas)
7 WHERE TRUNC(cas)=TRUNC(TO_DATE('18.01.2005'));
JMENO | PRIJMENI | NAZEV |
---|---|---|
Bohuslav | Martinů | Čtyři písně o Marii |
Zdeněk | Lukáš | Už vedou Martina |
Zdeněk | Lukáš | Na horách |
Zdeněk | Lukáš | Pater noster |
Bohuslav | Martinů | Čarování a pomluvy |
Bohuslav | Martinů | Chceme my se chceme |
Claude | Debussy | Trois chansons |
7 rows selected.
SQL>
SQL>
SQL>
SQL> -- Seznam zpěváků se 100% docházkou.
SQL>
SQL> SELECT Zpevak.*
2 FROM Zpevak JOIN (
3 SELECT DISTINCT RC FROM Ucast
4 MINUS
5 SELECT DISTINCT RC FROM Ucast WHERE pritomen=0
6 ) Vzorni ON Zpevak.RC=Vzorni.RC;
RC | JMENO | PRIJMENI | ADRESA | TELEFON | HLAS | |
---|---|---|---|---|---|---|
5561032947 | Eva | Janoušková | A | |||
6508283452 | Josef | Prknař | B | |||
6903034321 | Oldřich | Hrubý | B | |||
7622263841 | Michal | Hospr | T |
SQL>
SQL>
SQL> -- Stejný dotaz jako předchozí, tentokrát řešený poddotazem.
SQL>
SQL> SELECT *
2 FROM Zpevak
3 WHERE RC NOT IN (
4 SELECT RC FROM Ucast WHERE pritomen=0
5 );
RC | JMENO | PRIJMENI | ADRESA | TELEFON | HLAS | |
---|---|---|---|---|---|---|
7622263841 | Michal | Hospr | T | |||
6903034321 | Oldřich | Hrubý | B | |||
5561032947 | Eva | Janoušková | A | |||
6508283452 | Josef | Prknař | B |
SQL>
SQL>
SQL> -- Opět stejný dotaz řešený vztaženým poddotazem.
SQL>
SQL> SELECT *
2 FROM Zpevak
3 WHERE NOT EXISTS (
4 SELECT * FROM Ucast WHERE pritomen=0 AND Ucast.RC=Zpevak.RC
5 );
RC | JMENO | PRIJMENI | ADRESA | TELEFON | HLAS | |
---|---|---|---|---|---|---|
7622263841 | Michal | Hospr | T | |||
6903034321 | Oldřich | Hrubý | B | |||
5561032947 | Eva | Janoušková | A | |||
6508283452 | Josef | Prknař | B |
SQL>
SQL>
SQL> -- Seznam zpěváků, kteří nemají noty na Čtyři písně o Marii.
SQL>
SQL> SELECT jmeno, prijmeni FROM Zpevak
2 MINUS
3 SELECT jmeno, prijmeni FROM Zpevak
4 JOIN Zapujcka_not using (RC)
5 JOIN Publikace using (kat_cislo)
6 JOIN Zarazeni using (kat_cislo)
7 JOIN Skladba using (id)
8 WHERE nazev='Čtyři písně o Marii';
JMENO | PRIJMENI |
---|---|
Jana | Rinkeová |
Karel | Valtr |
Stanislav | Pulec |
SQL>
SQL>
SQL> -- Skladatelé, kteří jsou autorem nějaké skladby a zároveň upravovatelem nějaké skladby.
SQL>
SQL> SELECT jmeno, prijmeni FROM Skladatel JOIN Autorstvi using (jmeno, prijmeni) WHERE je_uprava=0
2 INTERSECT
3 SELECT jmeno, prijmeni FROM Skladatel JOIN Autorstvi using (jmeno, prijmeni) WHERE je_uprava<>0;
JMENO | PRIJMENI |
---|---|
Zdeněk | Lukáš |
SQL>
SQL>
SQL>
SQL> -- Seznam publikací, od kterých je v inventáři méně než pět exemplářů. První realizaci můžeme zjednodušit tak, vybereme ty publikace, kde existují jen exempláře s pořadovými čísly < 5.
SQL>
SQL> SELECT *
2 FROM Publikace A
3 WHERE NOT EXISTS (
4 SELECT * FROM Vytisk
5 WHERE A.kat_cislo=Vytisk.kat_cislo AND cislo_exemplare >= 5);
KAT_CISLO | NAZEV_P | VARIANTA | POCET_STRAN |
---|---|---|---|
7 | Napadly písně | B | |
6 | Napadly písně | T |
SQL>
SQL>
SQL> -- Stejný dotaz s použitím agregace, navíc bez výše použitého zjednodušeni.
SQL>
SQL> SELECT *
2 FROM Publikace
3 WHERE 5 > (SELECT COUNT(*) FROM Vytisk
4 WHERE Publikace.kat_cislo=Vytisk.kat_cislo);
KAT_CISLO | NAZEV_P | VARIANTA | POCET_STRAN |
---|---|---|---|
6 | Napadly písně | T | |
7 | Napadly písně | B |
SQL>
SQL>
SQL> -- Seznam publikací, které obsahují více než jednu skladbu.
SQL>
SQL> SELECT *
2 FROM Publikace NATURAL JOIN (
3 SELECT DISTINCT A.kat_cislo
4 FROM Zarazeni A JOIN Zarazeni B
5 ON A.kat_cislo=B.kat_cislo AND A.id < B.id
6 );
KAT_CISLO | NAZEV_P | VARIANTA | POCET_STRAN |
---|---|---|---|
1 | České lidové písně | SATB | |
2 | Four Negro Spirituals | SATB | |
14 | Sborová tvorba B. Martinů | SATB |
SQL>
SQL>
SQL> -- Stejný dotaz přehledněji s agregací.
SQL>
SQL> SELECT *
2 FROM Publikace
3 WHERE 1 < (
4 SELECT COUNT(*) FROM Zarazeni
5 WHERE Zarazeni.kat_cislo=Publikace.kat_cislo
6 );
KAT_CISLO | NAZEV_P | VARIANTA | POCET_STRAN |
---|---|---|---|
1 | České lidové písně | SATB | |
2 | Four Negro Spirituals | SATB | |
14 | Sborová tvorba B. Martinů | SATB |
SQL>
SQL>
SQL> -- Seznam zpěváků, kteří nikdy nezpívali žádnou skladbu Jana Hanuše.
SQL>
SQL> SELECT jmeno, prijmeni
2 FROM Zpevak
3 WHERE RC NOT IN (
4 SELECT RC FROM Ucast
5 WHERE (misto, cas) IN (
6 SELECT misto, cas
7 FROM Skladatel
8 JOIN Autorstvi using (jmeno, prijmeni)
9 JOIN Skladba using (id)
10 JOIN Cast_programu using (id)
11 JOIN Udalost using (misto, cas)
12 WHERE jmeno='Jan' AND prijmeni LIKE 'Hanuš'
13 )
14 AND pritomen <> 0
15 );
JMENO | PRIJMENI |
---|---|
Stanislav | Pulec |
SQL>
SQL>
SQL> -- Seznam všech koncertů a generálek.
SQL>
SQL> SELECT cas, misto, 'Koncert' AS druh FROM Koncert
2 UNION
3 SELECT cas, misto, 'Generálka' AS druh FROM Zkouska WHERE je_generalka<>0
4 ORDER BY cas;
CAS | MISTO | DRUH |
---|---|---|
30.09.2004 | Velká zkušebna | Generálka |
01.10.2004 | Kostel sv. Antonína, Strossmayerovo nám. | Koncert |
02.10.2004 | Sál Martinů, Malostranské nám. | Koncert |
21.10.2004 | Velká zkušebna | Generálka |
22.10.2004 | Kulturní dům Modřany | Koncert |
01.12.2004 | Kostel sv. Mikuláše, Malostranské nám. | Koncert |
18.12.2004 | Staroměstské náměstí | Koncert |
22.12.2004 | Kostel sv. Martina ve zdi | Koncert |
17.01.2005 | Velká zkušebna | Generálka |
18.01.2005 | Městská knihovna, Mariánské náměstí | Koncert |
02.02.2005 | Kostel sv. Antonína, Strossmayerovo nám. | Koncert |
11 rows selected.
SQL>
SQL>
SQL> -- Seznam koncertů, na nichž byly provedeny všechny skladby B. Martinů na repertoáru.
SQL>
SQL> SELECT misto, cas FROM Koncert
2 MINUS
3 SELECT misto, cas
4 FROM (SELECT id FROM Skladatel
5 JOIN Autorstvi using (jmeno, prijmeni)
6 JOIN Skladba using (id)
7 WHERE jmeno='Bohuslav' AND prijmeni='Martinů'
8 ) CROSS JOIN Koncert
9 WHERE (id, misto, cas) NOT IN (SELECT id, misto, cas
10 FROM Cast_programu);
MISTO | CAS |
---|---|
Kostel sv. Antonína, Strossmayerovo nám. | 02.02.2005 |
Městská knihovna, Mariánské náměstí | 18.01.2005 |
SQL>
SQL>
SQL> -- Který zpěvák má největší z půjčených šatů?
SQL>
SQL> SELECT jmeno, prijmeni, velikost
2 FROM Zpevak
3 JOIN Zapujcka_satu using (RC)
4 JOIN Saty using (inv_cislo)
5 WHERE velikost=(SELECT MAX(velikost) FROM Saty NATURAL JOIN Zapujcka_satu);
JMENO | PRIJMENI | VELIKOST |
---|---|---|
Jindřich | Hojer | 57 |
SQL>
SQL>
SQL> -- Přehled účasti na zkouškách (v procentech).
SQL>
SQL> SELECT jmeno, prijmeni,
2 CAST((SELECT COUNT(*) FROM Ucast NATURAL JOIN Zkouska
3 WHERE Zpevak.RC=Ucast.RC AND pritomen<>0)
4 AS REAL)
5 /(SELECT COUNT(*) FROM Ucast NATURAL JOIN Zkouska
6 WHERE Zpevak.RC=Ucast.RC
7 )*100 || ' %' AS dochazka
8 FROM Zpevak ORDER BY prijmeni;
JMENO | PRIJMENI | DOCHAZKA |
---|---|---|
Jaroslav | Doubek | 90 % |
Jan | Havlík | 95 % |
Alena | Havlíková | 90 % |
Jindřich | Hojer | 95 % |
Irena | Horová | 95 % |
Michal | Hospr | 100 % |
Oldřich | Hrubý | 100 % |
Eva | Janoušková | 100 % |
Pavla | Kohlová | 95 % |
Kateřina | Orlová | 90 % |
Lenka | Pašková | 95 % |
Josef | Prknař | 100 % |
Stanislav | Pulec | 70 % |
Jana | Rinkeová | 90 % |
Karel | Valtr | 85 % |
Jiřina | Zámostná | 95 % |
16 rows selected.
SQL>
SQL>
SQL> -- Seznam hlasových skupin: název, počet členů, jméno vedoucího.
SQL>
SQL> SELECT nazev_h,
2 poc_clenu,
3 jmeno || ' ' || prijmeni AS vedouci
4 FROM (
5 SELECT zkratka, nazev_h, COUNT(RC) AS poc_clenu
6 FROM Hlas LEFT JOIN Zpevak ON Hlas.zkratka=Zpevak.hlas
7 GROUP BY zkratka, nazev_h
8 )
9 LEFT JOIN Vedeni USING(zkratka) LEFT JOIN Zpevak USING(RC);
NAZEV_H | POC_CLENU | VEDOUCI |
---|---|---|
Kontratenor | 0 | |
Tenor | 4 | Jaroslav Doubek |
Bas | 4 | Oldřich Hrubý |
Soprán | 4 | Alena Havlíková |
Alt | 4 | Kateřina Orlová |
SQL>
SQL>
SQL> -- Seznam míst, na kterých se koncertovalo vícekrát a vždy bylo přítomno více než 50 diváků.
SQL>
SQL> SELECT misto, count(misto) AS pocet_koncertu, AVG(divaku) AS prum_divaku
2 FROM Koncert
3 WHERE divaku > 50
4 GROUP BY misto
5 HAVING count(misto) > 1;
MISTO | POCET_KONCERTU | PRUM_DIVAKU |
---|---|---|
Kostel sv. Antonína, Strossmayerovo nám. | 2 | 83 |
SQL>
SQL>
SQL> -- Skladatel nejvíce zastoupený na koncertech co do počtu skladeb.
SQL>
SQL> --Využívám pohled rating_skladatelu:
SQL> SELECT jmeno, prijmeni, pocet
2 FROM Rating_skladatelu
3 WHERE pocet = (SELECT MAX(pocet) FROM Rating_skladatelu);
JMENO | PRIJMENI | POCET |
---|---|---|
Bohuslav | Martinů | 6 |
SQL>
SQL>
SQL> -- Pro divácky nejúspěšnější koncert určit rozdíl ceny vstupného od průměru.
SQL>
SQL> SELECT (
2 SELECT vstupne FROM Koncert
3 WHERE divaku = (
4 SELECT max(divaku) FROM Koncert
5 )
6 ) - (
7 SELECT AVG(vstupne) FROM Koncert
8 )
9 AS odchylka FROM Dual;
ODCHYLKA |
---|
10 |
SQL>
SQL>
SQL>
SQL> -- Skladatelé, kteří se mohli během života setkat s Bohuslavem Martinů.
SQL>
SQL> SELECT * FROM skladatel
2 WHERE rok_narozeni < (SELECT rok_umrti FROM skladatel
3 WHERE jmeno='Bohuslav' AND prijmeni='Martinů')
4 AND rok_umrti > (SELECT rok_narozeni FROM skladatel
5 WHERE jmeno='Bohuslav' AND prijmeni='Martinů');
JMENO | PRIJMENI | ROK_NAROZENI | ROK_UMRTI |
---|---|---|---|
Antonín | Dvořák | 1841 | 1904 |
Bohuslav | Martinů | 1890 | 1959 |
Jan | Hanuš | 1905 | 2004 |
Claude | Debussy | 1862 | 1918 |
SQL>
SQL>
SQL> -- Seznam skladatelů, jejichž skladby byly na programu koncertů s nadprůměrnou návštěvou.
SQL>
SQL> SELECT DISTINCT jmeno, prijmeni
2 FROM skladatel
3 JOIN autorstvi using (jmeno, prijmeni)
4 JOIN skladba using (id)
5 JOIN cast_programu using (id)
6 JOIN koncert using (misto, cas)
7 WHERE divaku > (SELECT AVG(divaku) FROM koncert);
JMENO | PRIJMENI |
---|---|
Jan | Hanuš |
Antonín | Dvořák |
Bohuslav | Martinů |
SQL>
SQL>
SQL> -- Koncert, na němž bylo uvedeno nejvíce různých skladeb.
SQL>
SQL> SELECT *
2 FROM (
3 SELECT misto, cas, COUNT(*) AS pocet
4 FROM cast_programu NATURAL JOIN koncert
5 GROUP BY misto, cas
6 ) WHERE pocet = (
7 SELECT MAX(pocet) FROM (
8 SELECT COUNT(*) AS pocet
9 FROM cast_programu NATURAL JOIN koncert
10 GROUP BY misto, cas
11 )
12 );
MISTO | CAS | POCET |
---|---|---|
Městská knihovna, Mariánské náměstí | 18.01.2005 | 7 |
SQL>
SQL>
SQL> -- Přehled ošacení - všichni zpěváci a jejich šaty, zároveň všechny šaty a jejich držitelé.
SQL>
SQL> SELECT
2 COALESCE(prijmeni, 'VOLNÉ') AS drzitel,
3 inv_cislo, velikost
4 FROM Zpevak LEFT JOIN Zapujcka_satu USING(RC)
5 FULL JOIN Saty USING(inv_cislo);
DRZITEL | INV_CISLO | VELIKOST |
---|---|---|
Doubek | 1 | 55 |
Hospr | 2 | 55 |
Hojer | 5 | 57 |
Havlíková | 6 | 42 |
Rinkeová | 7 | 43 |
Pašková | 8 | 46 |
Orlová | 9 | 46 |
Horová | 10 | 48 |
Valtr | 11 | 52 |
Hrubý | 12 | 52 |
Prknař | 14 | 56 |
Janoušková | 15 | 44 |
Pulec | 17 | 56 |
Kohlová | ||
Zámostná | ||
Havlík | ||
VOLNÉ | 3 | 55 |
VOLNÉ | 18 | 50 |
VOLNÉ | 4 | 57 |
VOLNÉ | 16 | 49 |
VOLNÉ | 13 | 50 |
21 rows selected.
SQL>
SQL>
SQL> -- Skladatelé a počet uvedení jejich skladeb
SQL>
SQL> CREATE OR REPLACE VIEW rating_skladatelu AS
2 SELECT jmeno, prijmeni, count(*) AS pocet
3 FROM Skladatel
4 JOIN Autorstvi using (jmeno, prijmeni)
5 JOIN Skladba using (id)
6 JOIN Cast_programu using (id)
7 JOIN Koncert using (misto, cas)
8 GROUP BY jmeno, prijmeni;
View created.
SQL>
SQL> select * from rating_skladatelu;
JMENO | PRIJMENI | POCET |
---|---|---|
Jan | Hanuš | 2 |
Claude | Debussy | 1 |
Zdeněk | Lukáš | 3 |
Antonín | Dvořák | 2 |
Bohuslav | Martinů | 6 |
Jakub Jan | Ryba | 2 |
6 rows selected.
SQL>
SQL>
SQL> -- Vytvoříme redundantní tabulku ucasti_zpeváků, kde budou předpočítané hodnoty). Tuto tabulku naplníme daty. Atribut koef vyjadruje koeficient (ponechme stranou, co to znamená).
SQL>
SQL> drop table ucasti_zpevaku;
Table dropped.
SQL>
SQL> create table ucasti_zpevaku (
2 rc number(10),
3 jmeno varchar2(30),
4 prijmeni varchar2(30),
5 zkousek number(4),
6 koncertu number(4),
7 koef number(1));
Table created.
SQL>
SQL>
SQL> insert into ucasti_zpevaku
2 SELECT rc, jmeno, prijmeni,
3 (SELECT COUNT(*) FROM Ucast NATURAL JOIN Zkouska
4 WHERE Zpevak.RC=Ucast.RC AND pritomen<>0)
5 as zkousek,
6 (SELECT COUNT(*) FROM Ucast NATURAL JOIN Koncert
7 WHERE Zpevak.RC=Ucast.RC AND pritomen<>0)
8 as koncertu,
9 0 as koef
10 FROM Zpevak ORDER BY prijmeni;
16 rows created.
SQL>
SQL> commit;
Commit complete.
SQL>
SQL> select * from ucasti_zpevaku;
RC | JMENO | PRIJMENI | ZKOUSEK | KONCERTU | KOEF |
---|---|---|---|---|---|
6706062648 | Jaroslav | Doubek | 18 | 8 | 0 |
5901012681 | Jan | Havlík | 19 | 8 | 0 |
5953014321 | Alena | Havlíková | 18 | 7 | 0 |
5402022234 | Jindřich | Hojer | 19 | 8 | 0 |
6958216542 | Irena | Horová | 19 | 8 | 0 |
7622263841 | Michal | Hospr | 20 | 8 | 0 |
6903034321 | Oldřich | Hrubý | 20 | 8 | 0 |
5561032947 | Eva | Janoušková | 17 | 8 | 0 |
7061135522 | Pavla | Kohlová | 19 | 8 | 0 |
6555151278 | Kateřina | Orlová | 18 | 8 | 0 |
6457021234 | Lenka | Pašková | 19 | 7 | 0 |
6508283452 | Josef | Prknař | 8 | 4 | 0 |
7711124554 | Stanislav | Pulec | 14 | 6 | 0 |
7263225148 | Jana | Rinkeová | 18 | 8 | 0 |
7007073737 | Karel | Valtr | 17 | 8 | 0 |
4951032446 | Jiřina | Zámostná | 19 | 8 | 0 |
16 rows selected.
SQL>
SQL>
SQL> drop table ucasti_zpevaku;
Table dropped.
SQL>
SQL> create table UCASTI_ZPEVAKU as
2 SELECT rc, jmeno, prijmeni,
3 (SELECT COUNT(*) FROM Ucast NATURAL JOIN Zkouska
4 WHERE Zpevak.RC=Ucast.RC AND pritomen<>0)
5 as zkousek,
6 (SELECT COUNT(*) FROM Ucast NATURAL JOIN Koncert
7 WHERE Zpevak.RC=Ucast.RC AND pritomen<>0)
8 as koncertu,
9 0 as koef
10 FROM Zpevak ORDER BY prijmeni;
Table created.
SQL>
SQL> select * from ucasti_zpevaku;
RC | JMENO | PRIJMENI | ZKOUSEK | KONCERTU | KOEF |
---|---|---|---|---|---|
6706062648 | Jaroslav | Doubek | 18 | 8 | 0 |
5901012681 | Jan | Havlík | 19 | 8 | 0 |
5953014321 | Alena | Havlíková | 18 | 7 | 0 |
5402022234 | Jindřich | Hojer | 19 | 8 | 0 |
6958216542 | Irena | Horová | 19 | 8 | 0 |
7622263841 | Michal | Hospr | 20 | 8 | 0 |
6903034321 | Oldřich | Hrubý | 20 | 8 | 0 |
5561032947 | Eva | Janoušková | 17 | 8 | 0 |
7061135522 | Pavla | Kohlová | 19 | 8 | 0 |
6555151278 | Kateřina | Orlová | 18 | 8 | 0 |
6457021234 | Lenka | Pašková | 19 | 7 | 0 |
6508283452 | Josef | Prknař | 8 | 4 | 0 |
7711124554 | Stanislav | Pulec | 14 | 6 | 0 |
7263225148 | Jana | Rinkeová | 18 | 8 | 0 |
7007073737 | Karel | Valtr | 17 | 8 | 0 |
4951032446 | Jiřina | Zámostná | 19 | 8 | 0 |
16 rows selected.
SQL>
SQL>
SQL> -- Zpěvákům, kteří zpívají alt nastavíme v relaci ucasti_zpevaku hodnotu atributu koef tak, že vyjadřuje počet jimi zapůjčených výtisků not.
SQL>
SQL> update ucasti_zpevaku u
2 set koef =
3 (select count(*)
4 from zapujcka_not z
5 where u.rc = z.rc)
6 where u.rc in (select rc from zpevak where hlas = 'A');
4 rows updated.
SQL>
SQL> commit;
Commit complete.
SQL>
SQL>
SQL> -- Z tabulky ucasti_zpevaku vymažeme ty zpěváky, kteří zpívají basy.
SQL>
SQL> delete from ucasti_zpevaku
2 where rc in (select rc from zpevak where hlas = 'B');
4 rows deleted.
SQL>
SQL> commit;
Commit complete.
SQL>
SQL>
SQL> set markup html off
SQL> spool off