Ciele
- Absolvovať zápočtový test.
- Pokračovanie v práci s Grafanou.
Úvod
Dnešné cvičenie je primárne venované zápočtovej písomke. Písomka prebieha na moodle.
Termín pre opravnú zápočtovku bol určený na 12. týždeň. Upozorňujem, že pri hodnotení sa berie posledný pokus, tzn. ak sa rozhodnete pre opravný termín, tak sa bude brať hodnotenie z neho.
V rámci písomky dostanete 4 testové otázky teoretického charakteru z prvých prednášok po koniec selectov (tzn. po vnorené dopyty). Otázky sú buď testové s možnosťami (jedna a viac možných správnych odpovedí - aj keď je dovolené vybrať viacero správnych, ešte to neznamená, že otázka má viacero správnych odpovedí), alebo s krátkou odpoveďou (jeden textbox), kde je potrebné napísať napr. nejaké kľúčové slovo (napr. 'zadajte klauzulu (kľúčové slovo), pomocou ktorej viete vyfiltrovať záznamy výsledku selectu po zoskupení záznamov' bude mať odpoveď 'having').
Druhá časť bude praktická a v rámci nej bude potrebné vyriešiť 3 úlohy, kde riešením je SQL select. Odpoveď na otázku zadávate do moodlu, ktorý ju automaticky testuje voči vzorovej databáze. V rámci otázky bude definované, nad akou databázou pracovať, a otázka bude uvádzať aj informácie potrebné na pripojenie sa na vzorovú databázu, nad ktorou si môžete testovať svoje riešenie. Pri písomke teda môžete používať DataGrip. NIE JE DOVOLENÉ používať iné zdroje a samozrejme ani žiadnu komunikáciu, či už so spolužiakom, alebo kamarátom cez sociálne siete. Porušenie týchto pravidiel môže byť riešene disciplinárnou komisiou. Pozor, pri zadávaní selectu nesmiete vložiť žiadny komentár - iba samotný select.
Pred písomkou si zopakujte ako sa nastavuje pripojenie v DBeaver alebo DataGrip-e, pretože to zrejme budete potrebovať.
Postup
Krok 1
Úloha 1.1
Podľa pokynov sa prihláste do moodlu na test a vyriešte ho.
Poznámka
V odpovediach, kde je potrebné zadať SELECT, uvádzajte iba SELECT, bez ; na konci a bez nejakých komentárov.
Krok 2
Úloha 2.1
Na minulom cvičení ste vytvorili Váš prvý dashboard Program kín. Upravte tento dashboard tak, aby sa dal použiť ako program kín na 3 mesiace dopredu. To znamená, že chceme dáta filtrovať podľa stĺpca "datum". To docielime nasledovným zápisom: $__timeFilter(datum). Taktiež tento dashboard upravte tak, nech zobrazuje len stĺpce relevantné pre návštevníka kina, napr. mesto, názov kina, dátum, názov filmu, dĺžka filmu a cena lístka.
Riešenie
SELECT mesto,
kino,
To_char(datum, 'DD.MM HH24:MI') AS datum,
film,
dlzka,
cena
FROM movies.v_program_kin
WHERE $__timeFilter(datum)
ORDER BY 1,
2
Poznámka
Keďže nás zaujíma program, ktorý ešte len bude vysielaný od teraz na 3 mesiace dopredu, musíme si správne nastaviť časové rozpätie.
Upozornenie
Keďže do databázy movies nie sú pribežné pridávané nové záznamy (pokiaľ si ich nepridáte sami) toto časové rozpätie (now - now+3M) nemusí vypísať program kín. V takom prípade si ako časové rozpätie nastavte dátumy od 1.3.2021 po 1.5.2021.
Poznámka
Aby sa nám tento time range zachoval ako predvolený, pri ukladaní dashboardu zaklikneme checkbox:
Úloha 2.2
Doplňte filter na názov filmu. Ingorujte veľké a malé písmená.
Keďže chceme dáta filtorvať podľa názvu filmu, ktorý zadáme, musíme si vytvoriť premennú. Premennú vytvoríme kliknutím na nastavenia dashboardu v pravom hornom rohu.
V ľavom menu prejdeme na položku Variables. Klikneme na Add variable.
Premennú si môžeme pomenovať napríklad film. Jej typ je Text box.
Po vytvorení premennej si môžte všimnúť, že pribudlo pole pre vstup. Teraz je nutné upraviť dotaz tak, aby zohľadnil túto skutočnosť a dáta vyfiltorval podľa zadaného názvu (bez ohľadu na veľkosť písmen).
SELECT mesto,
kino,
To_char(datum, 'DD.MM HH24:MI') AS datum,
film,
dlzka,
cena
FROM movies.v_program_kin
WHERE $__timeFilter(datum)
AND Upper(film) LIKE Upper('%$film%')
ORDER BY 1,
2
Dashboard vyzerá nasledovne:
Úloha 2.3
Podobným spôsobom doplňte do dashboardu filter na mesto. Táto premenná nech je typu Query. Umožnite výber viacerých miest naraz (Multi-value) a povoľte aj možnosť Include All option, ktorá označí všetky mestá. Mestá nech sa v drop-downe zobrazujú zoradené abecedne.
Riešenie
SELECT mesto,
kino,
To_char(datum, 'DD.MM HH24:MI') AS datum,
film,
dlzka,
cena
FROM movies.v_program_kin
WHERE $__timeFilter(datum)
AND Upper(film) LIKE Upper('%$film%')
AND mesto IN ($mesto)
ORDER BY 1,
2
Poznámka
V sekcii Query Options je nutné do poľa Query napísať jednoduchý dotaz na výber názvu miest (cit_name) z tabuľky c_city. Správnosť dopytu na výber miest si môžte overiť porovnaním Preview of values s tabuľkou c_city vo Vašej databáze.
Upozornenie
Po vypracovaní úloh z cvičenia prosím o vyplnenie nasledujúceho dotazníka.