Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdLeen Willems Laatst gewijzigd meer dan 10 jaar geleden
1
1 Analytische functies 18 mei 2005
2
2 Onderwerpen Introductievoorbeeld Kenmerken / achterliggende gedachten Syntax Praktijkvoorbeelden
3
3 Introductievoorbeeld Toon mij van iedere medewerker -zijn naam -de afdeling waarin hij werkzaam is -zijn salaris -het cumulatieve salaris per afdeling -percentage van salaris binnen de afdeling -percentage van salaris binnen het bedrijf gesorteerd op afdeling en salaris af1a.sql af1b.sql af1c.sql
4
4 Kenmerken Sinds 8.1.6 Weinig gebruikt, toch erg krachtig Lijken soms op bekende aggregatie- functies SUM, COUNT, MAX e.d. …maar aggregeren niet voorkomen meerdere benaderingen van dezelfde tabel, b.v. self joins af2.sql
5
5 Overzicht Denk niet in rijen … EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- -------- ---------- ---------- ---------- 7782 CLARK MANAGER 7839 09-06-81 2450 10 7839 KING PRESIDENT 17-11-81 5000 10 7934 MILLER CLERK 7782 23-01-82 1300 10 7876 ADAMS CLERK 7788 23-05-87 1100 20 7902 FORD ANALYST 7566 03-12-81 3000 20 7566 JONES MANAGER 7839 02-04-81 2975 20 7788 SCOTT ANALYST 7566 19-04-87 3000 20 7369 SMITH CLERK 7902 17-12-80 800 20 7499 ALLEN SALESMAN 7698 20-02-81 1600 300 30 7698 BLAKE MANAGER 7839 01-05-81 2850 30 7900 JAMES CLERK 7698 03-12-81 950 30 7654 MARTIN SALESMAN 7698 28-09-81 1250 1400 30 7844 TURNER SALESMAN 7698 08-09-81 1500 0 30 7521 WARD SALESMAN 7698 22-02-81 1250 500 30 7902 FORD ANALYST 7566 03-12-81 3000 20
6
6 Overzicht … maar in verzame- lingen EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- -------- ---------- ---------- ---------- 7782 CLARK MANAGER 7839 09-06-81 2450 10 7839 KING PRESIDENT 17-11-81 5000 10 7934 MILLER CLERK 7782 23-01-82 1300 10 7876 ADAMS CLERK 7788 23-05-87 1100 20 7902 FORD ANALYST 7566 03-12-81 3000 20 7566 JONES MANAGER 7839 02-04-81 2975 20 7788 SCOTT ANALYST 7566 19-04-87 3000 20 7369 SMITH CLERK 7902 17-12-80 800 20 7499 ALLEN SALESMAN 7698 20-02-81 1600 300 30 7698 BLAKE MANAGER 7839 01-05-81 2850 30 7900 JAMES CLERK 7698 03-12-81 950 30 7654 MARTIN SALESMAN 7698 28-09-81 1250 1400 30 7844 TURNER SALESMAN 7698 08-09-81 1500 0 30 7521 WARD SALESMAN 7698 22-02-81 1250 500 30 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- -------- ---------- ---------- ---------- 7782 CLARK MANAGER 7839 09-06-81 2450 10 7839 KING PRESIDENT 17-11-81 5000 10 7934 MILLER CLERK 7782 23-01-82 1300 10 7876 ADAMS CLERK 7788 23-05-87 1100 20 7902 FORD ANALYST 7566 03-12-81 3000 20 7566 JONES MANAGER 7839 02-04-81 2975 20 7788 SCOTT ANALYST 7566 19-04-87 3000 20 7369 SMITH CLERK 7902 17-12-80 800 20 7499 ALLEN SALESMAN 7698 20-02-81 1600 300 30 7698 BLAKE MANAGER 7839 01-05-81 2850 30 7900 JAMES CLERK 7698 03-12-81 950 30 7654 MARTIN SALESMAN 7698 28-09-81 1250 1400 30 7844 TURNER SALESMAN 7698 08-09-81 1500 0 30 7521 WARD SALESMAN 7698 22-02-81 1250 500 30
7
7 Evaluatievolgorde Als laatste Dus zelfs na HAVING, rownum … Behalve: voor de ORDER BY Wil je ze in WHERE-clausule hebben nesten (inline view) af3b.sql af3a.sql
8
8 Syntax (,,…) OVER ( )
9
9 De functies LAGCOUNTCORR LEADSUMCOVAR_POP FIRST_VALUEMAXSTDDEV LAST_VALUEMINSTDDEV_POP RANKAVGSTDDEV_SAMP DENSE_RANKNTILEVAR_POP RATIO_TO_REPORTCUME_DISTVAR_SAMP ROW_NUMBERPERCENT_RANKVARIANCE REGR_x (9 stuks)
10
10 Partitieclausule PARTITION BY,, … Beetje vergelijkbaar met SQL*Plus commando BREAK af4.sql
11
11 Ordeningsclausule ORDER BY expressie, … Verandert werking van functie van een totaalfunctie naar een lopend totaal af5.sql
12
12 Voorbeeld 1: Top N Met name interessant voor BI-zoekvragen M.b.v. analytische functies COUNT, RANK of DENSE_RANK af6.sql
13
13 Voorbeeld 2: etappe-uitslag 1. David Zabriskie (VSt)0.58:31 2. Ivan Basso (Ita) + 0:17 3. Paolo Savoldelli (Ita) + 0:44 4. Marzio Bruseghin (Ita) + 0:48 5. Serguei Gonchar (Oek) z.t. 6. Vladimir Karpets (Rus) + 1:07 7. Markus Fothen (Dui) + 1:15 8. Thomas Dekker (Ned) + 1:23 9. Jan Hruska (Tsj) + 1:34 10. Danilo di Luca (Ita) z.t. af7.sql
14
14 Voorbeeld 3: perioden Eis: niet-overlappend en aansluitend Variant 1) alleen begindatum SELECT... FROM a WHERE begindatum < b_peildatum AND NOT EXISTS ( SELECT ‘grotere begindatum’ FROM a a2 WHERE “a join a2” AND begindatum < b_peildatum AND a2.begindatum > a.begindatum ) Variant 2) begindatum en einddatum veel triggercode om eis af te dwingen af8.sql
15
15 Voorbeeld 4: vorig voorschotbedrag Per klant iedere maand een nota met notaregel met het voorschotbedrag Per klant eenmaal per jaar een nota met regel voor periodieke afrekening Vorig voorschotbedrag = het bedrag van de notaregel die qua datum voor de laatste periodieke afrekening ligt af9.sql
16
16 Voorbeeld 5: Groeperen TIJD HOEVEELHEID -------- ----------- 12:22:01 100 12:22:03 200 12:22:04 300 12:22:06 200 12:22:45 100 12:22:46 200 12:23:12 100 12:23:12 200 af10.sql MIN(TIJD) MAX(TIJD) HOEVEELHEID --------- --------- ----------- 12:22:01 12:22:06 800 12:22:45 12:22:46 300 12:23:12 12:23:12 300
17
17 Vensterclausule Verder specificeren op welke gegevens de analytische functie moet werken Geankerd / Zwevend Rijen (ROWS) / Bereik (RANGE) Bijv: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW of: ROWS 5 PRECEDING af8.sql
18
18 Einde V R A G E N ? af8.sql
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.