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