Funkcje analityczne SQL CUBE (1)

Podobne dokumenty
Hurtownie danych - przegląd technologii

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

SQL do zaawansowanych analiz danych część 2.

Rozdział 14 Funkcje analityczne

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

Bazy danych wykład trzeci. Konrad Zdanowski

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

TECHNOLOGIE BAZ DANYCH

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

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

Bazy danych - Materiały do laboratoriów IV

Autor: Joanna Karwowska

OnLine Analytical Processing (OLAP) Zapytania SQL

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.

PODZAPYTANIE (SUBSELECT)

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

Grupowanie danych klauzula GROUP BY

Klasyczna Analiza Danych

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

Funkcje analityczne języka SQL

Język SQL. Rozdział 2. Proste zapytania

Schemat bazy danych. Funkcje analityczne. ROLLUP - wynik ROLLUP

Technologie semantyczne i sieci społecznościowe laboratorium

Autor: Joanna Karwowska

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

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

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

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

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

3. Podzapytania, łączenie tabel i zapytań

Przestrzenne bazy danych Podstawy języka SQL

Wydział Elektrotechniki, Informatyki i Telekomunikacji

Optymalizacja poleceń SQL Metody dostępu do danych

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

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

Rozszerzenia grupowania

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

Ćwiczenie 3 funkcje agregujące

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

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

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

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

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

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

Wprowadzenie do języka SQL

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

Komunikacja z bazą danych psql

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

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

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

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

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

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

Technologie baz danych

Systemy GIS Tworzenie zapytań w bazach danych

Podstawowe zapytania SELECT (na jednej tabeli)

Indeksowanie w bazach danych

Wprowadzenie do baz danych

Pobieranie danych, czyli instrukcja SELECT

Map Reduce Proste zliczanie słów i zapytania SQL

Instrukcje DQL: SELECT. Zastosowanie SELECT, opcje i warianty

PL/SQL. Funkcje wbudowane

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych

QUERY język zapytań do tworzenia raportów w AS/400

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

Grupowanie i funkcje agregacji. Grupowanie z użyciem rollup

Zapytania z ograniczeniem czasowym w Oracle

XML Repository. Maciej Zakrzewicz.

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

Agregacja i Grupowanie Danych. Funkcje Agregacji. Opcje GROUP BY oraz HAVING

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

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

Indeksy w bazach danych. Motywacje. Techniki indeksowania w eksploracji danych. Plan prezentacji. Dotychczasowe prace badawcze skupiały się na

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

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle

Grupowanie i funkcje agregacji

Partycjonowanie. Partycjonowanie tabel (1)

1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) możemy określić do której grupy plików trafi

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

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

INFORMATYKA GEODEZYJNO- KARTOGRAFICZNA Relacyjny model danych. Relacyjny model danych Struktury danych Operacje Oganiczenia integralnościowe

TEMAT ĆWICZENIA Zapoznanie z technologią LINQ

CREATE TABLE logika (p BOOLEAN); INSERT INTO logika VALUES(true); INSERT INTO logika VALUES(false); INSERT INTO logika VALUES(NULL);

Transkrypt:

Funkcje analityczne SQL CUBE (1) JOB DEPTNO SUM(SAL) --------- ---------- ---------- 29025 10 8750 20 10875 30 9400 CLERK 4150 CLERK 10 1300 CLERK 20 1900 CLERK 30 950 ANALYST 6000 ANALYST 20 6000 MANAGER 8275 MANAGER 10 2450 MANAGER 20 2975 MANAGER 30 2850 SALESMAN 5600 SALESMAN 30 5600 PRESIDENT 5000 PRESIDENT 10 5000 select job, deptno, sum(sal) group by cube(job, deptno); 30 20 cl an ma sa pr 950 2850 5600 9400 1900 6000 2975 10 1300 2450 5000 10875 8750 4150 6000 8275 5600 5000 29025 Politechnika Poznańska, Instytut Informatyki 1

Funkcje analityczne SQL CUBE (2) CUBE (job, deptno, mgr) jest równoważne: select... group by job select... group by deptno select... group by mgr select... group by job, deptno select... group by job, mgr select... group by deptno, mgr select... group by job, deptno, mgr select..."total"; Politechnika Poznańska, Instytut Informatyki 2

Funkcje analityczne SQL ROLLUP (1) JOB DEPTNO SUM(SAL) --------- ---------- ---------- CLERK 10 1300 CLERK 20 1900 CLERK 30 950 CLERK 4150 ANALYST 20 6000 ANALYST 6000 MANAGER 10 2450 MANAGER 20 2975 MANAGER 30 2850 MANAGER 8275 SALESMAN 30 5600 SALESMAN 5600 PRESIDENT 10 5000 PRESIDENT 5000 29025 select job, deptno, sum(sal) group by ROLLUP(job, deptno); 30 20 cl an ma sa pr 950 2850 5600 1900 6000 2975 10 1300 2450 5000 4150 6000 8275 5600 5000 29025 Politechnika Poznańska, Instytut Informatyki 3

Funkcje analityczne SQL ROLLUP (2) DEPTNO JOB SUM(SAL) ---------- --------- ---------- 10 CLERK 1300 10 MANAGER 2450 10 PRESIDENT 5000 10 8750 20 CLERK 1900 20 ANALYST 6000 20 MANAGER 2975 20 10875 30 CLERK 950 30 MANAGER 2850 30 SALESMAN 5600 30 9400 290251 select deptno, job, sum(sal) group by ROLLUP(deptno, job); 30 20 cl an ma sa pr 950 2850 5600 9400 1900 6000 2975 10 1300 2450 5000 10875 8750 29025 Politechnika Poznańska, Instytut Informatyki 4

Funkcje analityczne SQL ROLLUP (3) ROLLUP (job, deptno, mgr) jest równoważne: select... group by job select... group by job, deptno select... group by job, deptno, mgr select..."total"; Politechnika Poznańska, Instytut Informatyki 5

Funkcje analityczne SQL GROUPING SETS (1) JOB DEPTNO MGR SUM(SAL) --------- ------ ----- ---------- CLERK 10 1300 CLERK 20 1900 CLERK 30 950 ANALYST 20 6000 MANAGER 10 2450 MANAGER 20 2975 MANAGER 30 2850 SALESMAN 30 5600 PRESIDENT 10 5000 CLERK 7698 950 CLERK 7782 1300 CLERK 7788 1100 CLERK 7902 800 ANALYST 7566 6000 MANAGER 7839 8275 SALESMAN 7698 5600 PRESIDENT 5000 29025 select job, deptno, mgr, sum(sal) group by GROUPING SETS ((job, deptno), (job, mgr), ()); group by job, deptno group by job, mgr Politechnika Poznańska, Instytut Informatyki 6

Funkcje analityczne SQL GROUPING SETS (2) GROUPING SETS (job, deptno, mgr) jest równoważne: select... group by job select... group by deptno select... group by mgr; GROUPING SETS (job, deptno, (deptno, mgr)) jest równoważne: select... group by job select... group by deptno select... group by deptno, mgr; Politechnika Poznańska, Instytut Informatyki 7

Funkcje analityczne SQL GROUPING 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), () ) Politechnika Poznańska, Instytut Informatyki 8

Funkcje analityczne SQL GROUPING select job, deptno, sum(sal), GROUPING(job), GROUPING(deptno) group by ROLLUP(job, deptno); JOB DEPTNO SUM(SAL) GROUPING(JOB) GROUPING(DEPTNO) --------- ------ ---------- ------------- ---------------- CLERK 10 1300 0 0 CLERK 20 1900 0 0 CLERK 30 950 0 0 CLERK 4150 0 1 ANALYST 20 6000 0 0 ANALYST 6000 0 1 MANAGER 10 2450 0 0 MANAGER 20 2975 0 0 MANAGER 30 2850 0 0 MANAGER 8275 0 1 SALESMAN 30 5600 0 0 SALESMAN 5600 0 1 PRESIDENT 10 5000 0 0 PRESIDENT 5000 0 1 29025 1 1 Politechnika Poznańska, Instytut Informatyki 9

Funkcje analityczne SQL RANK wyznaczanie rankingu select * from (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 from dept d, emp e where d.deptno=e.deptno group by d.dname) where rank<=4; DNAME TOTAL_SAL RANK DRANK -------------- ---------- ---------- ---------- HUMAN RES. 11600 1 1 SALES 11600 1 1 RESEARCH 10875 3 2 ACCOUNTING 8750 4 3 kolejność sortowania wartości NULL -domyślnie NULLS LAST -możliwe NULLS FIRST Politechnika Poznańska, Instytut Informatyki 10

Funkcje analityczne SQL RANK PARTITION BY (1) wyznaczanie rankingu select * from (select ename, deptno, sal, RANK() over (PARTITION BY deptno order by sal desc nulls last) as rank ) where rank<=2; ENAME DEPTNO SAL RANK ---------- ------ ---------- ---------- KING 10 5000 1 CLARK 10 2450 2 SCOTT 20 3000 1 FORD 20 3000 1 BLAKE 30 2850 1 ALLEN 30 1600 2 Politechnika Poznańska, Instytut Informatyki 11

Funkcje analityczne SQL RANK PARTITION BY (2) wyznaczanie rankingu podzbiorach select * from (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; DEPTNO JOB SUM(SAL) RANK ------ --------- ---------- ---------- 10 PRESIDENT 5000 1 10 MANAGER 2450 2 20 ANALYST 6000 1 20 MANAGER 2975 2 30 SALESMAN 5600 1 30 MANAGER 2850 2 Politechnika Poznańska, Instytut Informatyki 12

Funkcje analityczne SQL RANK what if analysis wyznaczanie hipotecznego 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 13

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 3000 1 FORD 3000 1 JONES 2975 1 ADAMS 1100 2 SMITH 800 2 Politechnika Poznańska, Instytut Informatyki 14

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 ------- ------ --- SMITH 800 0 JAMES 950 0 ALLEN 1600 1 WARD 1250 1 ADAMS 1100 1 TURNER 1500 1 MARTIN 1250 1 MILLER 1300 1 JONES 2975 2 BLAKE 2850 2 CLARK 2450 2 SCOTT 3000 3 FORD 3000 3 KING 5000 5 wartości < 1000 zakres dziedziny <1000, 5000) jest dzielony na 4 równej szerokości przedziały: <1000, 2000), <2000, 3000), <3000, 4000), <4000, 5000) przedział <4000, 5000) nie ma rekordów select ename, sal, WIDTH_BUCKET(sal, 1000, 5000, 4) as WB order by WB; wartości >= 5000 zakres wartości <1000, 5000) Politechnika Poznańska, Instytut Informatyki 15

Funkcje analityczne SQL suma kumulacyjna (1) select deptno, sum(sal), sum(sum(sal)) over (order by deptno rows unbounded preceding) as cum_sum group by deptno; DEPTNO SUM(SAL) CUM_SUM ---------- ---------- ---------- 10 8750 8750 20 10875 19625 30 9400 29025 60 11600 40625 suma kumulacyjna jest obliczana z wykorzystaniem bieżącego rekordu i wszystkich rekordów go poprzedzających Politechnika Poznańska, Instytut Informatyki 16

Funkcje analityczne SQL suma kumulacyjna (2) select deptno, sum(sal), sum(sum(sal)) over (order by deptno rows 1 preceding) as cum_sum group by deptno; DEPTNO SUM(SAL) CUM_SUM ---------- ---------- ---------- 10 8750 8750 20 10875 19625 30 9400 20275 60 11600 21000 suma kumulacyjna jest obliczana z wykorzystaniem bieżącego rekordu i 1 rekordu go poprzedzającego Politechnika Poznańska, Instytut Informatyki 17

Funkcje analityczne SQL suma kumulacyjna (3) select deptno, sum(sal), sum(sum(sal)) over (order by deptno rows between 1 preceding and 1 following) as cum_sum group by deptno; DEPTNO SUM(SAL) CUM_SUM ---------- ---------- ---------- 10 8750 19625 20 10875 29025 30 9400 31875 60 11600 21000 19635=8750+10875 29025=8750+10875+9400 Politechnika Poznańska, Instytut Informatyki 18

Funkcje analityczne SQL suma 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 102 05-FEB-1999 26 60 01-MAR-1999 42 84 02-MAR-1999 42 84 01-APR-1999 42 42 239,04=56,02+183,02 84=42+42 Politechnika Poznańska, Instytut Informatyki 19

Funkcje analityczne SQL max (1) 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 --------- ---------- ---------- ----------- ANALYST 20 6000 6000 CLERK 10 1300 1900 CLERK 20 1900 1900 CLERK 30 950 1900 MANAGER 10 2450 2975 MANAGER 20 2975 2975 MANAGER 30 2850 2975 PRESIDENT 10 5000 5000 SALESMAN 30 5600 5600 pensje na poszczególnych etatach w poszczególnych zespołach maksymalne pensje na etatach Politechnika Poznańska, Instytut Informatyki 20

Funkcje analityczne SQL max (2) select job, deptno, job_sal from (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 --------- ---------- ---------- ANALYST 20 6000 CLERK 20 1900 MANAGER 20 2975 PRESIDENT 10 5000 SALESMAN 30 5600 Politechnika Poznańska, Instytut Informatyki 21

Funkcje analityczne SQL RATIO_TO_REPORT select job, deptno, sum(sal) as job_sal, sum(sum(sal)) over () as sum_sal, RATIO_TO_REPORT(sum(sal)) OVER() as ratio_to_report group by job, deptno; suma pensji dla wszystkich rekordów pracowników JOB DEPTNO JOB_SAL SUM_SAL RATIO_TO_REPORT --------- ---------- ---------- ---------- --------------- ANALYST 20 6000 29025,206718346 CLERK 10 1300 29025,044788975 CLERK 20 1900 29025,06546081 CLERK 30 950 29025,032730405 MANAGER 10 2450 29025,084409991 MANAGER 20 2975 29025,102497847 MANAGER 30 2850 29025,098191214 PRESIDENT 10 5000 29025,172265289 SALESMAN 30 5600 29025,192937123 RATIO_TO_REPORT = job_sal/sum_sal Politechnika Poznańska, Instytut Informatyki 22

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 ---------- ---------- ---------------- ---------------- 1 239,04 200 2 200 239,04 84 NULL brak rekordu poprzedzającego 3 84 200 42 4 42 84 NULL brak rekordu następującego Politechnika Poznańska, Instytut Informatyki 23

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 24