Hurtownie danych - przegląd technologii

Podobne dokumenty
Funkcje analityczne SQL CUBE (1)

ORACLE. System Zarządzania Bazą Danych Oracle. Oracle Advanced SQL

Rozdział 14 Funkcje analityczne

SQL do zaawansowanych analiz danych część 2.

188 Funkcje analityczne

Materiały szkoleniowe. Podstawy języka SQL

ORACLE. System Zarządzania Bazą Danych Oracle. Oracle Advanced SQL

Technologie baz danych

Ćwiczenie 3. Funkcje analityczne

Zadania SELECT do schematu EDS (EMP, DEPT, SALGRADE)

Oracle 12c: Nowości w SQL i PL/SQL

SQL do zaawansowanych analiz danych część 1.

Standard SQL/XML. Wprowadzenie do XQuery

Materiały szkoleniowe. Podstawy jzyka SQL. Prowadzcy Anna Pijanowska - Kunierz Paweł ołnierczyk

Oracle Statistical Functions 11g: statystyka dla dużych i małych

Bazy danych. Plan wykáadu. Zale*noci funkcyjne. Wykáad 4: Relacyjny model danych - zale*noci funkcyjne. A B

PODZAPYTANIE (SUBSELECT)

select zam_id, cena_euro,(rank() over (partition by zam_id order by cena_euro)) from pozycjezamowien order by zam_id

Bazy danych wykład trzeci. Konrad Zdanowski

OnLine Analytical Processing (OLAP) Zapytania SQL

TECHNOLOGIE BAZ DANYCH

sqlplus [ użytkownik [ / hasło ] ]

Ćwiczenie 3 funkcje agregujące

Nauczycielem wszystkiego jest praktyka Juliusz Cezar. Nauka to wiara w ignorancję ekspertów Richard Feynman

Bazy danych - Materiały do laboratoriów IV

Wybór EUROPEAN będzie rozpoznawał dzień przed miesiącem, natomiast US miesiąc przed dniem.

Język SQL. Rozdział 4. Funkcje grupowe Funkcje grupowe, podział relacji na grupy, klauzule GROUP BY i HAVING.

Klasyczna Analiza Danych

Funkcje analityczne języka SQL

Bazy danych. Plan wykáadu. Powtórzenie BCNF i 3NF. Nowa forma redundancji. Wykáad 6: Postaci normalne. SQL - zapytania záo*one.

Relacji między tabelami klucze obce. Schemat bazy danych, wczytanej z pliku create_tables.sql. Klucz obcy jako ograniczenie dla kolumny

Autor: Joanna Karwowska

Grupowanie danych klauzula GROUP BY

Plan. Wyświetlanie n początkowych wartości (TOP n) Użycie funkcji agregujących. Grupowanie danych - klauzula GROUP BY

3. Podzapytania, łączenie tabel i zapytań

Schemat bazy danych. Funkcje analityczne. ROLLUP - wynik ROLLUP

Język SQL. Rozdział 2. Proste zapytania

SQL. Receptury IDZ DO KATALOG KSI EK TWÓJ KOSZYK CENNIK I INFORMACJE CZYTELNIA PRZYK ADOWY ROZDZIA. SPIS TREœCI KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG

Klasyczna Analiza Danych

Technologie semantyczne i sieci społecznościowe laboratorium

Informatyka sem. III studia inżynierskie Transport 2018/19 LAB 2. Lab Backup bazy danych. Tworzenie kopii (backup) bazy danych

Zbiór pytań nr 2. 1 Tabela DEPARTMENTS ma następującą strukturę:

Hurtownie danych - przegląd technologii Robert Wrembel Politechnika Poznańska Instytut Informatyki

Autor: Joanna Karwowska

Plan wykładu. Elementy ERD BAZY DANYCH. Proces modelowania i implementacji bazy danych. Diagramy związków encji. SQL podzapytania

Bazy danych. Plan wykładu. Złczenia tabel. Perspektywy cd. Wykład 9: Programowanie aplikacji baz danych po stronie serwera. Sekwencje Wyzwalacze

Przestrzenne bazy danych Podstawy języka SQL

Wydział Elektrotechniki, Informatyki i Telekomunikacji

SELECT * FROM tabela WHERE warunek wybiera dane spełniające podany warunek

Optymalizacja poleceń SQL Metody dostępu do danych

Bazy danych. Plan wykładu. Zależności funkcyjne. Wykład 2: Relacyjny model danych - zależności funkcyjne. Podstawy SQL.

JPS. cwiczenia 3. Stosy, proste zapytania. Michał Lentner Polsko-Japońska Wyższa Szkoła Technik Komputerowych

Laboratorium nr 8. Temat: Podstawy języka zapytań SQL (część 2)

Rozszerzenia grupowania

SQL*Loader (2) SQL*Loader (1) SQL*Loader. SQL*Loader (4) SQL*Loader (3) Wczytywanie danych ze źródeł zewnętrznych

Specyfika języka SQL powoduje, że łatwiej jest najpierw wytłumaczyć, jak korzystać z funkcji grupujących, a dopiero później jak grupować dane.

Politechnika Łódzka, ul. Żeromskiego 116, Łódź, tel. (042) Projekt współfinansowany przez Unię Europejską

Lista zadań nr Wyświetlić imię i nazwisko dla każdego pracownika z departamentu DEP T NO o numerze 000.

Partycjonowanie. Partycjonowanie tabel (1)

Język SQL. instrukcja laboratoryjna. Politechnika Śląska Instytut Informatyki. laboratorium Bazy Danych

Wybór wszystkich danych: SELECT * FROM employee Wybór określonych kolumn lub wyrażeń: SELECT first_name, last_name, salary FROM employee

Przydatne sztuczki - sql. Na przykładzie postgres a.

Systemy OLAP I. Krzysztof Dembczyński. Instytut Informatyki Zakład Inteligentnych Systemów Wspomagania Decyzji Politechnika Poznańska

E.14 Bazy Danych cz. 13 SQL Grupowanie danych i funkcje grupujące

w ramach realizacji V etapu umowy nr 48/2009/F pt.

Map Reduce Proste zliczanie słów i zapytania SQL

Wprowadzenie do języka SQL

Lista zadań nr 1. Bazy danych laboratorium. dr inż. Grzegorz Bazydło, dr inż. Jacek Tkacz

Funkcja INITCAP. SQL> select initcap(dname), initcap(loc) from dept; Funkcja SUBSTR

Komunikacja z bazą danych psql

Zaawansowany SQL. Robert A. Kłopotek Wydział Matematyczno-Przyrodniczy. Szkoła Nauk Ścisłych, UKSW

- język zapytań służący do zapisywania wyrażeń relacji, modyfikacji relacji, tworzenia relacji

Relacyjne bazy danych. Podstawy SQL

Podzapytania do tabel W miejscu w którym możemy użyć nazwy tabeli, możemy użyć podzapytania

Hurtownie danych - przegląd technologii

Systemy GIS Tworzenie zapytań w bazach danych

Indeksowanie w bazach danych

Podstawowe zapytania SELECT (na jednej tabeli)

Pobieranie danych, czyli instrukcja SELECT

Język SQL. Rozdział 3. Zaawansowana selekcja danych

Funkcje. Rozdział 3. Funkcje. Funkcje znakowe (1) Funkcje wierszowe

Laboratorium nr 5. Temat: Funkcje agregujące, klauzule GROUP BY, HAVING

Język SQL. Rozdział 7. Zaawansowane mechanizmy w zapytaniach

PL/SQL. Funkcje wbudowane

Krzysztof Dembczyński. Inteligentne Systemy Wspomagania Decyzji Studia magisterskie, semestr I Semestr letni 2007/08

OLAP i hurtownie danych c.d.

"Kilka słów" o strojeniu poleceń SQL w kontekście Hurtowni Danych wprowadzenie. Krzysztof Jankiewicz

124 Bazy danych. Zaawansowane programowanie w T- SQL

Zapytania z ograniczeniem czasowym w Oracle

Wprowadzenie do baz danych

XML Repository. Maciej Zakrzewicz.

Wstęp Wprowadzenie do BD Podstawy SQL. Bazy Danych i Systemy informacyjne Wykład 1. Piotr Syga

Hurtownie danych - przegląd technologii Robert Wrembel Politechnika Poznańska Instytut Informatyki

Instrukcje DQL: SELECT. Zastosowanie SELECT, opcje i warianty

a) Polecenie: Wyświetl wszystkie rekordy z tabeli Pracownicy (wszystkie atrybuty)

Wykład 7 Implementacja języka SQL w systemach baz danych Oracle sortowanie, funkcje agregujące i podzapytania.

Szkolenie Oracle SQL podstawy. Terminy lutego 2010 First Minute! 1100zł!

Technologie baz danych

przygotował: Podstawy języka MDX Tworzenie zbiorów

Zbiór pytań nr 5. 2 Które stwierdzenie opisuje najlepiej zbiór uprawnień dostępny po wykonaniu

Transkrypt:

Funkcje analityczne SQL CUBE (1) Hurtownie danych - przegląd technologii Politechnika Poznańska Instytut Informatyki Robert.Wrembel@cs.put.poznan.pl www.cs.put.poznan.pl/rwrembel JOB DEPTNO SUM(SAL) 8750 20 875 9400 CLERK 4150 CLERK 10 CLERK 950 ANALYST 6000 MANAGER 8275 MANAGER MANAGER 2850 SALESMAN 5600 PRESIDENT select job, deptno, sum(sal) group by cube(job, deptno); 950 2850 5600 9400 10 875 8750 4150 6000 8275 5600 Politechnika Poznańska, Instytut Informatyki 2 Funkcje analityczne SQL CUBE (2) Funkcje analityczne SQL ROLLUP (1) CUBE (job, deptno, mgr) jest równowaŝne: select... group by mgr, deptno, mgr, mgr, deptno, mgr select..."total"; JOB DEPTNO SUM(SAL) CLERK 10 CLERK 950 CLERK 4150 ANALYST 6000 MANAGER MANAGER 2850 MANAGER 8275 SALESMAN 5600 PRESIDENT select job, deptno, sum(sal) group by ROLLUP(job, deptno); 950 2850 5600 10 4150 6000 8275 5600 Politechnika Poznańska, Instytut Informatyki 3 Politechnika Poznańska, Instytut Informatyki 4 Funkcje analityczne SQL ROLLUP (2) Funkcje analityczne SQL ROLLUP (3) DEPTNO JOB SUM(SAL) ---------- --------- ---------- CLERK 10 MANAGER PRESIDENT 8750 20 CLERK 1900 20 ANALYST 6000 20 MANAGER 2975 20 875 CLERK 950 MANAGER 2850 SALESMAN 5600 9400 1 select deptno, job, sum(sal) group by ROLLUP(deptno, job); 950 2850 5600 9400 10 875 8750 ROLLUP (job, deptno, mgr) jest równowaŝne:, deptno, deptno, mgr select..."total"; Politechnika Poznańska, Instytut Informatyki 5 Politechnika Poznańska, Instytut Informatyki 6

SETS (1) JOB DEPTNO MGR SUM(SAL) --------- ------ ----- ---------- select job, deptno, mgr, sum(sal) CLERK 10 group by GROUPING SETS CLERK 950 ((job, deptno), (job, mgr), ()); MANAGER MANAGER 2850 group by job, deptno CLERK 7698 950 CLERK 7782 10 CLERK 7788 10 CLERK 7902 800 group by job, mgr ANALYST 7566 6000 MANAGER 7839 8275 SALESMAN 7698 5600 PRESIDENT Politechnika Poznańska, Instytut Informatyki 7 SETS (2) GROUPING SETS (job, deptno, mgr) jest równowaŝne: select... group by mgr; GROUPING SETS (job, deptno, (deptno, mgr)) jest równowaŝne:, mgr; Politechnika Poznańska, Instytut Informatyki 8 SETS (3) CUBE (job, deptno, mgr) jest równowaŝne: GROUPING SETS ( (job, deptno, mgr), (job, deptno), (job, mgr), (deptno, mgr), (job), (deptno), (mgr), () ) ROLLUP (job, deptno, mgr) jest równowaŝne: GROUPING SETS ( (job, deptno, mgr), (job, deptno), (job), () ) select job, deptno, sum(sal), GROUPING(job), GROUPING(deptno) group by ROLLUP(job, deptno); JOB DEPTNO SUM(SAL) GROUPING(JOB) GROUPING(DEPTNO) --------- ------ ---------- ------------- ---------------- CLERK 10 0 0 0 0 CLERK 950 0 0 CLERK 4150 0 1 0 0 ANALYST 6000 0 1 MANAGER 0 0 0 0 MANAGER 2850 0 0 MANAGER 8275 0 1 0 0 SALESMAN 5600 0 1 0 0 PRESIDENT 0 1 1 1 Politechnika Poznańska, Instytut Informatyki 9 Politechnika Poznańska, Instytut Informatyki wyznaczanie rankingu (select d.dname, sum(e.sal+nvl(comm, 0)) as total_sal, RANK() over (order by sum(e.sal+nvl(comm, 0)) desc nulls last) as rank, DENSE_RANK() over (order by sum(e.sal+nvl(comm, 0)) desc nulls last) as drank dept d, emp e where d.deptno=e.deptno group by d.dname) where rank<=4; PARTITION BY (1) wyznaczanie rankingu (select ename, deptno, sal, RANK() over (PARTITION BY deptno order by sal desc nulls last) as rank ) where rank<=2; DNAME TOTAL_SAL RANK DRANK ---- ---------- HUMAN RES. 11600 1 1 SALES 11600 1 1 RESEARCH 875 3 2 ACCOUNTING 8750 4 3 kolejność sortowania wartości NULL -domyślnie NULLS LAST -moŝliwe NULLS FIRST ENAME DEPTNO SAL RANK ---------- ------ ---------- ---------- KING 1 CLARK 2 SCOTT 20 00 1 FORD 20 00 1 BLAKE 2850 1 ALLEN 1600 2 Politechnika Poznańska, Instytut Informatyki 11 Politechnika Poznańska, Instytut Informatyki 12

wyznaczanie rankingu podzbiorach (select deptno, job, sum(sal), RANK() over (PARTITION BY deptno order by sum(sal) desc nulls last) as rank group by deptno, job) where rank<=2; PARTITION BY (2) DEPTNO JOB SUM(SAL) RANK ------ PRESIDENT 1 MANAGER 2 20 ANALYST 6000 1 20 MANAGER 2975 2 SALESMAN 5600 1 MANAGER 2850 2 Politechnika Poznańska, Instytut Informatyki 13 what if analysis wyznaczanie hipotetycznego rankingu pracownika o zarobkach 4000 select RANK(4000) WITHIN GROUP (order by sal desc) as hrank ; pensja 4000 byłaby drugą co do wielkości HRANK ---------- 2 Politechnika Poznańska, Instytut Informatyki 14 Funkcje analityczne SQL NTILE dzieli uporządkowany zbiór wynikowy na n podzbiorów kaŝdy podzbiór otrzymuje numer liczba rekordów w podzbiorach róŝni się maksymalnie o 1 zakres wartości minimalnej i maksymalnej w tym samym podzbiorze moŝe być szeroki select ename, sal, NTILE(2) over(order by sal desc) as "ntile(2)" where deptno=20; ENAME SAL ntile(2) ------- ----- ---------- SCOTT 00 1 FORD 00 1 JONES 2975 1 ADAMS 10 2 SMITH 800 2 Politechnika Poznańska, Instytut Informatyki 15 Funkcje analityczne SQL WIDTH_BUCKET dzieli uporządkowany zbiór wynikowy na n podzbiorów; zbiór wynikowy zawiera rekordy z zadanego przedziału liczba rekordów w podzbiorach moŝe się róŝnić znacząco zakres wartości minimalnej i maksymalnej w tym samym podzbiorze powinien być niewielki ENAME SAL WB zakres dziedziny <00, ) ------- ------ --- jest dzielony na 4 równej SMITH 800 0 wartości < 00 szerokości przedziały: <00, JAMES 950 0 2000), <2000, 00), <00, ALLEN 1600 1 WARD 1250 1 4000), <4000, ) ADAMS 10 1 przedział <4000, ) nie ma TURNER 1500 1 rekordów MARTIN 1250 1 MILLER 10 1 JONES BLAKE CLARK SCOTT 2975 2 2850 2 2 00 3 select ename, sal, WIDTH_BUCKET(sal, 00,, 4) as WB order by WB; FORD 00 3 KING Robert 5 Wrembel wartości >= zakres wartości <00, ) Politechnika Poznańska, Instytut Informatyki 16 kumulacyjna (1) over (order by deptno rows unbounded preceding) as cum_sum kumulacyjna (2) over (order by deptno rows 1 preceding) as cum_sum 8750 8750 20 875 19625 9400 60 11600 40625 suma kumulacyjna jest obliczana z wykorzystaniem bieŝącego rekordu i wszystkich rekordów go poprzedzających 8750 8750 20 875 19625 9400 20275 60 11600 200 suma kumulacyjna jest obliczana z wykorzystaniem bieŝącego rekordu i 1 rekordu go poprzedzającego Politechnika Poznańska, Instytut Informatyki 17 Politechnika Poznańska, Instytut Informatyki 18

kumulacyjna (3) over (order by deptno rows between 1 preceding and 1 following) as cum_sum 8750 19625 20 875 9400 31875 60 11600 200 19635=8750+875 =8750+875+9400 kumulacyjna (4) SELECT t.time_key, SUM(f.purchase_price) as sales, SUM(SUM(f.purchase_price)) OVER (ORDER BY t.time_key RANGE BETWEEN INTERVAL '2' DAY PRECEDING AND INTERVAL '2' DAY FOLLOWING) as sales_5_day FROM purchases f, time t WHERE f.time_key = t.time_key GROUP BY t.time_key; TIME_KEY SALES SALES_5_DAY -- 01-JAN-1999 56,02 239,04 02-JAN-1999 183,02 239,04 01-FEB-1999 122 186 02-FEB-1999 42 198 03-FEB-1999 22 224 04-FEB-1999 12 2 05-FEB-1999 26 60 01-MAR-1999 42 84 02-MAR-1999 42 84 01-APR-1999 42 42 jest moŝliwe określanie interwału z wykorzystaniem słów kluczowych MONTH lub YEAR 239,04=56,02+183,02 84=42+42 Politechnika Poznańska, Instytut Informatyki 19 Politechnika Poznańska, Instytut Informatyki 20 Funkcje analityczne SQL max max (1) Funkcje analityczne SQL max max (2) select job, deptno, sum(sal) as job_sal, max(sum(sal)) over (partition by job) as max_job_sal group by job, deptno; JOB DEPTNO JOB_SAL MAX_JOB_SAL --------- - 6000 CLERK 10 1900 1900 CLERK 950 1900 MANAGER 2975 2975 MANAGER 2850 2975 5600 pensje na poszczególnych etatach w poszczególnych zespołach maksymalne pensje na etatach Politechnika Poznańska, Instytut Informatyki 21 select job, deptno, job_sal (select job, deptno, sum(sal) as job_sal, max(sum(sal)) over (partition by job) as max_job_sal group by job, deptno) where job_sal=max_job_sal; JOB DEPTNO JOB_SAL Politechnika Poznańska, Instytut Informatyki 22 Funkcje analityczne SQL RATIO_TO_REPORT select job, deptno, sum(sal) as job_sal, over () as total_sal, RATIO_TO_REPORT(sum(sal)) OVER() as ratio_to_report group by job, deptno; JOB DEPTNO JOB_SAL TOTAL_SAL RATIO_TO_REPORT --------- ---------------,206718346 CLERK 10,044788975,06546081 CLERK 950,0327405 MANAGER,084409991,2497847 MANAGER 2850,098191214,172265289,192937123 RATIO_TO_REPORT = total_sal/sum_sal suma pensji dla wszystkich rekordów pracowników Politechnika Poznańska, Instytut Informatyki 23 Funkcje analityczne SQL LAG i LEAD umoŝliwiają dostęp do wartości atrybutów rekordów poprzedzających dany rekord (LAG) lub następujących po danym rekordzie (LEAD) argument wywołania funkcji określa przesunięcie w tył/przód względem bieŝącego rekordu SELECT t.month, SUM(f.purchase_price) as sales, LAG(SUM(f.purchase_price),1) OVER (ORDER BY t.month) as sales_last_month, LEAD(SUM(f.purchase_price),1) OVER (ORDER BY t.month) as sales_next_month FROM purchases f, time t WHERE f.time_key = t.time_key AND t.year = 1999 GROUP BY t.month; MONTH SALES SALES_LAST_MONTH SALES_NEXT_MONTH NULL brak rekordu poprzedzającego ------ ---------------- 1 239,04 200 2 200 239,04 84 3 84 200 42 4 42 84 NULL brak rekordu następującego Politechnika Poznańska, Instytut Informatyki 24

Schemat magazynu danych do ćwiczeń PRODUCT product_id product_name category cost_price sell_price shipping_charge CUSTOMER customer_id town postal_code country occupation PURCHASES product_id time_key customer_id purchase_date purchase_price state_id TIME time_key day month quarter year day_number day_of_the_week week_number GEOGRAPHY state_id state_name region Politechnika Poznańska, Instytut Informatyki 25