Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Architektury a techniky DS Cvičení č. 10 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky

Podobné prezentace


Prezentace na téma: "Architektury a techniky DS Cvičení č. 10 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky"— Transkript prezentace:

1 Architektury a techniky DS Cvičení č. 10 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky david.zak@upce.cz david.zak@upce.cz

2 Cvičení č. 10 – úvod Schéma A_ZELEZNICE simuluje problematiku sestavování nákladních vlaků na železnici v ČR v dubnu roku 2007. Datumová část čísla vlaku zachycená atributem ID_VLAK_D je celé číslo v počtu dní od 1.1.2000, atribut ID_VLAK_P udává pořadí vytvoření vlaku v daném kalendářním dni, atribut VUZ_DOPL_UD_LIST tabulky VOZY_VLAKY představuje zřetězené kódy doplňkových událostí na vozech vždy po 2B. Ve schématu je více než 3,5 milionu záznamů a je určeno pro výuku optimalizace příkazů SELECT.

3 Cvičení č. 10 – popis VLAKY vyjadřuje sestavené vlaky, tak jak byly sepsány VLAKY_UDALOSTIvystihuje události týkající se vlaku, například: 881 (kod)Předání vlaku v kontrolním bodě (vym. stanici)130805 (počet událostí) 861Příjezd vlaku do stanice41564 871Odjezd vlaku ze stanice41437 1221Odjezd výchozího vlaku36443 851Ukončení jízdy vlaku36424 1212Soupis vozů výchozího vlaku34928 1421Odvěšení vozu z vlaku10130 1433Přivěšení vozu na vlak9738

4 Cvičení č. 10 – popis VOZY eviduje železniční vozy, jejich zavedení a zrušení VOZY_PRECISLOVANI eviduje přečíslování vozů a jejich důvody VOZY_UDALOSTI vystihuje události týkající se jednotlivých vozu, například: 1212 (kod)Soupis vozů výchozího vlaku502635(počet) 851Ukončení jízdy vlaku490458 1451Kontrola vozů po příjezdu vlaku197139 110Výstup vozu na vlečku - odevzdávkový list163737 130Vstup vozu z vlečky - návratový list150519 290Vyložení vozu100504 1521Vstup vozu na ČD95521 1531Výstup vozu z ČD95336 261Podej zásilky vnitrostátní přepravy76581 210Dodej zásilky vnitrostátní přepravy76197 651Výstup zásilky mezinárodní přepravy CIM64618 641Vstup zásilky mezinárodní přepravy CIM62879 1421Odvěšení vozu z vlaku58873 1433Přivěšení vozu na vlak57916

5 Cvičení č. 10 – popis VOZY_VLAKY vystihuje přivěšování a odvěšení vozu na vlak / z vlaku Významy ostatních (číselníkových) tabulek jsou zřejmé z jejich názvu, jejich atributů a ER diagramu, který je uložen v atributu ERD tabulky A_POPIS ve schématu A_ZELEZNICE. Orientační počty řádků v tabulkách: VOZY_UDALOSTI2424781 VOZY_VLAKY596250 VLAKY_UDALOSTI354770 VOZY135460 VLAKY37770 ZELEZNICNI_STANICE3686 VOZY_PRECISLOVANI464 TYPY_UDALOSTI173 VLAKOTVORNE_STANICE154 ZELEZNICE99 VUZ_DOPLN_UDALOSTI68 PROVOZNI_STAVY19 DRUH_VOZU5 LOZENI_VOZU3

6 Cvičení č. 10 – úkoly 1) 1.a) Zjistěte seznam všech vlaků, které přijely do žst. Břeclav hl.n. dne 13.4.2007 mezi 14 a 18 h. pohled cv10_1a (id_vlak_d, id_vlak_p, vlak_cislo, datum_prijezd) 1.b) Zjistěte prázdné vysokostěnné vozy v těchto vlacích. pohled cv10_1b(vuz_uic) 1.c) Odkud a kdy tyto vlaky vyjely pohled cv10_1c(id_vlak_d, id_vlak_p, vlak_cislo, ze_zst_nazev, do_zst_nazev) 2) Zjistěte průměrnou dobu (ve dnech do současnosti) od zavedení vozů, které v dubnu 2007 přepravovaly mrtvolu – tedy měly v kódech doplňujících událostí „Přeprava mrtvoly“ pohled cv10_2 (doba)

7 Cvičení č. 10 – úkoly Zjistěte největší počet vlaků, které vyjely 30.4.2007 pod stejným číslem vlaku a o jaké číslo vlaku šlo. 3) Zjistěte největší počet vlaků, které vyjely 30.4.2007 pod stejným číslem vlaku a o jaké číslo vlaku šlo. pohled cv10_3 (vlak_cislo, pocet) pohled cv10_4 (id_vlak_d, id_vlak_p, vlak_cislo, pocet_vozu, ze_zst_nazev, do_zst_nazev ) 4) Zjistěte, který vlak měl nejvíce vozů dne 25.4.2007 a odkud a kam jel. pohled cv10_4 (id_vlak_d, id_vlak_p, vlak_cislo, pocet_vozu, ze_zst_nazev, do_zst_nazev ) 5) Příklady 3) a 4) upravte pro použití příkazu SELECT s klauzulí WITH a porovnejte jejich exekuční plány. pohled cv10_3w (vlak_cislo, pocet) pohled cv10_4w (id_vlak_d, id_vlak_p, vlak_cislo, pocet_vozu, ze_zst_nazev, do_zst_nazev)

8 Cvičení č. 10 – příkazy s klauzulí WITH The WITH query_name clause lets you assign a name to a subquery block. You can then reference the subquery block multiple places in the query by specifying the query name. Oracle optimizes the query by treating the query name as either an inline view or as a temporary table. You can specify this clause in any top- level SELECT statement and in most types of subqueries. The query name is visible to the main query and to all subsequent subqueries except the subquery that defines the query name itself. A WITH clause is really best used when the result of the WITH query is required more than one time in the body of the query such as where one averaged value needs to be compared against two or three times.

9 Cvičení č. 10 – příkazy s klauzulí WITH WITH AS (subquery_sql_statement) SELECT FROM ; Příklad: select store_name, sum(quantity) store_sales, (select sum(quantity) from sales)/(select count(*) from store) avg_sales from store s, sales sl where s.store_key = sl.store_key having sum(quantity) > (select sum(quantity) from sales)/(select count(*) from store) group by store_name

10 Cvičení č. 10 – příkazy s klauzulí WITH WITH sum_sales AS select /*+ materialize */ sum(quantity) all_sales from stores, number_stores AS select /*+ materialize */ count(*) nbr_stores from stores, sales_by_store AS select /*+ materialize */ store_name, sum(quantity) store_sales from store natural join sales SELECT store_name FROM store, sum_sales, number_stores, sales_by_store WHERE store_sales > (all_sales / nbr_stores);


Stáhnout ppt "Architektury a techniky DS Cvičení č. 10 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky"

Podobné prezentace


Reklamy Google