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. rok kwart 2000 2001 suma region podregion kraj Q1 Q2 Q3 Q4 suma Q1 Q2 Q3 Q4 suma Americas Middle East Northern America Southern America US 1 1 1 1 4 1 1 1 1 4 8 CA 1 1 1 1 4 1 1 1 1 4 8 suma 2 2 2 2 8 2 2 2 2 8 16 AR 1 1 1 1 4 1 1 1 1 4 8 suma 3 3 3 3 12 3 3 3 3 12 24 Middle East SA 1 1 1 1 4 1 1 1 1 4 8 suma 4 4 4 4 16 4 4 4 4 16 32 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 Suma Ranking Poland 120 1 France 90 2 Germany 80 3 Spain 70 4 US 60 5 Portugal 50 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 Kraj Suma Ranking 2001 Poland 120 1 France 90 2 Germany 80 3 Spain 70 4 2000 Poland 100 1 Portugal 95 2 3
3. Napisać zapytanie pokazujące sumy wartości sprzedaży w USA kwartalnie i narastająco kwartalnie w danym roku: Rok Kwartał Suma arastająco 2000 1 9 9 2 20 29 3 10 39 4 3 42 2001 1 8 8 2 4 12 4. Napisać zapytanie pokazujące sumy wartości sprzedaży w USA kwartalnie oraz 3-kwartalną średnią kroczącą: Rok Kwartał Suma Średnia 3 kw 2000 1 9 9 2 20 14,5 3 10 13 4 3 11 2001 1 8 7 2 4 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