Oracle Advanced SQL
Transkrypt
Oracle Advanced SQL
ORACLE System Zarządzania Bazą Danych Oracle Oracle Advanced SQL wersja 1.0 Politechnika Śląska 2008 Plan laboratorium • • • Frazy SQL: group by, rollup, cube, grouping sets funkcje analityczne, budowa modeli SQL dla zadań budżetowania, przewidywania trendów i zastosowań statystycznych (fraza model), Schemat testowy Schemat SH przedstawia bazę danych (hurtownię danych) wspomagającą przeprowadzanie analiz dotyczących wartości sprzedaży oraz poniesionych kosztów ze względu na: okres sprzedaży, produkt, kanał dystrybucji, promocję oraz klienta który dokonał transakcji. Główne tabele schematu SH: • TIMES – wymiar czasu • CHANNELS – wymiar kanału dystrybucji • CUSTOMERS – wymiar klienta • COUNTRIES – wymiar klienta, opis obszaru geograficznego • PRODUCTS – wymiar produktu • PROMOTIONS – wymiar promocji • SALES – fakty o sprzedaży • COSTS – fakty o kosztach Opis tabeli można uzyskać m.in. stosując komendę DESC <nazwa_tabeli>. Z1 Identyfikacja sekcji laboratoryjnej – logowanie 1. Zapytać prowadzącego laboratorium o nazwę podsekcji, nazwę użytkownika laboratoryjnego, hasło oraz opis bazy danych. 2. Ustalić identyfikator sekcji ID<data w formacie rrmmdd>_<nr_sekcji>_<nr_podsekcji>, np. ID051231_1_3 – identyfikator ten należy umieścić w sprawozdaniu Otworzyć SQL*Plus Worksheet lub SQL*Plus, zalogować się do bazy danych. Dla każdego zapytania należy zapisać zapytanie SQL, które je realizuje. Do formatowania wyniku należy użyć poleceń, typu: • • • • COLUMN country_region FORMAT A12 -- format pola 12 znaków COLUMN calendar_year FORMAT 9999 -- format pola 4 liczby set pagesize 100 -- rozmiar strony set linesize 200 -- długość linii Z2 Raportowanie z wykorzystaniem konstrukcji standardu SQL 1. Podać sumaryczną wartość sprzedaży, sumaryczną liczbę sprzedanych jednostek osiągniętą w poszczególnych regionach i krajach (wyświetlić country_iso_code) – wynik uporządkować malejąco wg wartości sprzedaży. 2. Podać zapytania pozwalające na pobranie danych do raportu podsumowującego wartość sprzedaży na poziomach: regionu, podregionu, kraju, roku, kwartału dla regionów „Americas” i „Middle East” i lat 2000-2001 (schemat raportu, wg zamieszczonej tabeli, zawiera ona dane przykładowe). W raporcie należy podać wszystkie sumy częściowe – od poziomu kraj-kwartał do sumy globalnej (wszystkie regiony, we wszystkich latach). Użyć: a. group by <lista kolumn> b. group by grouping sets(…) 2 c. group by rollup(…) d. group by cube (…) Dla każdego zapytania podać: • 20 pierwszych rekordów uzyskanych w wyniku realizacji zapytania posortowanych malejąco wg amount_sold, • całkowitą liczbę zwróconych rekordów • sumaryczny czas wykonania raportu (wszystkich zapytań dla a)-d)) – użyć: set timing on/set timing off). Porównać czasy wykonania wszystkich raportów. region Americas podregion Northern America Southern America kraj rok kwart 2000 Q1 Q2 Q3 Q4 suma 2001 Q1 Q2 Q3 Q4 suma US 1 1 1 1 4 1 1 1 1 4 8 CA suma 1 2 1 2 1 2 1 2 4 8 1 2 1 2 1 2 1 2 4 8 8 16 AR 1 1 1 1 4 1 1 1 1 4 8 suma 1 3 1 3 1 3 1 3 4 12 1 3 1 3 1 3 1 3 4 12 8 24 SA 1 1 1 1 4 1 1 1 1 4 8 suma 1 1 4 1 1 4 1 1 4 1 1 4 4 4 16 1 1 4 1 1 4 1 1 4 1 1 4 4 4 16 8 8 32 suma Middle East Middle East suma suma suma Z3 Raportowanie z wykorzystaniem funkcji analitycznych SQL 1. Podać zapytanie tworzące ranking krajów według sprzedaży całkowitej (użyć RANK) – miejsce I dla kraju o największej wartości sprzedaży. Kraj Poland France Germany Spain US Portugal … Suma 120 90 80 70 60 50 … Ranking 1 2 3 4 5 6 … 2. Podać zapytanie tworzące ranking krajów z regionu „Europe” w poszczególnych latach według sprzedaży całkowitej (użyć RANK). Rok 2001 2000 Kraj Poland France Germany Spain Poland Portugal … Suma 120 90 80 70 100 95 … Ranking 1 2 3 4 1 2 … 3 3. Napisać zapytanie pokazujące sumy wartości sprzedaży w USA kwartalnie i narastająco kwartalnie w danym roku: Rok 2000 2001 Kwartał 1 2 3 4 1 2 … Suma 9 20 10 3 8 4 … arastająco 9 29 39 42 8 12 … 4. Napisać zapytanie pokazujące sumy wartości sprzedaży w USA kwartalnie oraz 3-kwartalną średnią kroczącą: Rok 2000 2001 Kwartał 1 2 3 4 1 2 … Suma 9 20 10 3 8 4 … Średnia 3 kw 9 14,5 13 11 7 5 … Z4 Raportowanie z wykorzystaniem modeli SQL Utworzyć perspektywę: CREATE VIEW sales_view AS SELECT country_name country, prod_name product, calendar_year year, SUM(amount_sold) sales, COUNT(amount_sold) cnt, MAX(calendar_year) KEEP (DENSE_RANK FIRST ORDER BY SUM(amount_sold) DESC) OVER (PARTITION BY country_name, prod_name) best_year, MAX(calendar_year) KEEP (DENSE_RANK LAST ORDER BY SUM(amount_sold) DESC) OVER (PARTITION BY country_name, prod_name) worst_year FROM sales, times, customers, countries, products WHERE sales.time_id = times.time_id AND sales.prod_id = products.prod_id AND sales.cust_id =customers.cust_id AND customers.country_id=countries.country_id GROUP BY country_name, prod_name, calendar_year; W oparciu o SALES_VIEW utworzyć jeden model o następującej charakterystyce: 1. model skoryguje, że po roku 1999 wartość sprzedaży podkładki pod mysz (‘Mouse Pad’) w Polsce wynosiła 5, 2. model zakłada, że wartość sprzedaży produktu '128MB Memory Card' w roku 2006 w USA i Wielkiej Brytanii wzrośnie o 15% w stosunku do średniej sprzedaży w latach 1999-2005, 3. model zakłada, że wartość sprzedaży produktu 'Mouse Pad' w roku 2006 w Polsce wzrośnie o 5% w stosunku do maksymalnej wartości dotychczas zarejestrowanej sprzedaży tego produktu, 4. model wypisze przewidywaną wartość wszystkich produktów, których sprzedaż prognozuje się w roku 2006 4 5