Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

5 Verdichten von Daten mit Gruppenfunktionen. 5-2 Ziele Kennenlernen der vorhandenen Gruppenfunktionen Anwendung von Gruppenfunktionen Gruppieren von.

Ähnliche Präsentationen


Präsentation zum Thema: "5 Verdichten von Daten mit Gruppenfunktionen. 5-2 Ziele Kennenlernen der vorhandenen Gruppenfunktionen Anwendung von Gruppenfunktionen Gruppieren von."—  Präsentation transkript:

1 5 Verdichten von Daten mit Gruppenfunktionen

2 5-2 Ziele Kennenlernen der vorhandenen Gruppenfunktionen Anwendung von Gruppenfunktionen Gruppieren von Daten mittels GROUP BY Klausel Selektieren von Gruppen unter Anwendung der HAVING Klausel Kennenlernen der vorhandenen Gruppenfunktionen Anwendung von Gruppenfunktionen Gruppieren von Daten mittels GROUP BY Klausel Selektieren von Gruppen unter Anwendung der HAVING Klausel

3 5-3 Was sind Gruppenfunktionen? Gruppenfunktionen operieren auf Mengen von Zeilen und ergeben ein Resultat pro Gruppe. EMP Maximales Gehalt in Gehalt in EMP Tabelle DEPTNO SAL --------- 10 2450 10 5000 10 1300 20 800 20 1100 20 3000 20 2975 30 1600 30 2850 30 1250 30 950 30 1500 30 1250 MAX(SAL) --------- 5000

4 5-4 Typen von Gruppenfunktionen AVG COUNT MAX MIN SUM STDDEV VARIANCE AVG COUNT MAX MIN SUM STDDEV VARIANCE

5 5-5 Einsatz von Gruppenfunktionen SELECT[column,] group_function(column) FROMtable [WHEREcondition] [GROUP BYcolumn] [ORDER BYcolumn];

6 5-6 Verwendung von AVG und SUM AVG(SAL) MAX(SAL) MIN(SAL) SUM(SAL) -------- --------- --------- --------- 1400 1600 1250 5600 AVG and SUM anwendbar für numerische Daten. SQL> SELECTAVG(sal), MAX(sal), 2MIN(sal), SUM(sal) 3FROMemp 4WHEREjob LIKE 'SALES%';

7 5-7 Anwendung von MIN und MAX MIN and MAX für beliebigen Datentyp geeignet. SQL> SELECTMIN(hiredate), MAX(hiredate) 2 FROMemp; MIN(HIRED MAX(HIRED --------- 17-DEC-80 12-JAN-83

8 5-8 COUNT-Funktion COUNT(*) --------- 6 SQL> SELECTCOUNT(*) 2 FROMemp 3 WHEREdeptno = 30; COUNT(*) liefert die Anzahl von Zeilen in einer Tabelle.

9 5-9 Anwendung der COUNT- Funktion COUNT(expr) liefert die Anzahl Zeilen, die nicht null sind. SQL> SELECTCOUNT(comm) 2 FROMemp 3 WHEREdeptno = 30; COUNT(COMM) ----------- 4

10 5-10 Gruppenfunktion und Nullwerte Gruppenfunktionen ignorieren Nullwerte in der Spalte. SQL> SELECT AVG(comm) 2 FROM emp; AVG(COMM) --------- 550

11 5-11 Anwendung der NVL Funktion auf Gruppenfunktionen Die NVL-Funktion zwingt Gruppenfunk- tionen zur Einbeziehung von Nullwerten. SQL> SELECT AVG(NVL(comm,0)) 2 FROM emp; AVG(NVL(COMM,0)) ---------------- 157.14286

12 5-12 Gruppierung von Daten EMP durchschnittl. Gehalt in EMP Tabelle für jede Abteilung 2916.6667 2916.6667 2175 2175 1566.6667 1566.6667 DEPTNO SAL --------- 10 2450 10 5000 10 1300 20 800 20 1100 20 3000 20 2975 30 1600 30 2850 30 1250 30 950 30 1500 30 1250 DEPTNO AVG(SAL) ------- --------- 10 2916.6667 20 2175 30 1566.6667

13 5-13 Gruppierung von Daten: GROUP BY Klausel SELECTcolumn, group_function(column) FROMtable [WHEREcondition] [GROUP BYgroup_by_expression] [ORDER BYcolumn]; Aufteilung von Zeilen in einer Tabelle in kleinere Gruppen durch Anwendung der GROUP BY Klausel.

14 5-14 Anwendung der GROUP BY Klausel Alle Spalten in der SELECT Liste, die nicht in Funktionen verwendet werden, müssen in der GROUP BY Klausel stehen. SQL> SELECT deptno, AVG(sal) 2 FROM emp 3 GROUP BY deptno; DEPTNO AVG(SAL) --------- 10 2916.6667 20 2175 30 1566.6667

15 5-15 Anwendung von GROUP BY Die GROUP BY Spalte braucht nicht in der SELECT Liste enthalten zu sein. SQL> SELECT AVG(sal) 2 FROM emp 3 GROUP BY deptno; AVG(SAL) --------- 2916.6667 2175 1566.6667

16 5-16 Gruppierung nach mehreren Spalten EMP summiere Gehälter in der EMP Tabelle für jeden Job,, gruppiert nach Abteilung DEPTNO JOB SAL --------- --------- --------- 10 MANAGER 2450 10 PRESIDENT 5000 10 CLERK 1300 20 CLERK 800 20 CLERK 1100 20 ANALYST 3000 20 MANAGER 2975 30 SALESMAN 1600 30 MANAGER 2850 30 SALESMAN 1250 30 CLERK 950 30 SALESMAN 1500 30 SALESMAN 1250 JOB SUM(SAL) --------- CLERK 1300 MANAGER 2450 PRESIDENT 5000 ANALYST 6000 CLERK 1900 MANAGER 2975 CLERK 950 MANAGER 2850 SALESMAN 5600 DEPTNO -------- 10 20 30

17 5-17 Anwendung von GROUP BY bei mehreren Spalten SQL> SELECT deptno, job, sum(sal) 2 FROM emp 3 GROUP BY deptno, job; DEPTNO JOB SUM(SAL) --------- --------- --------- 10 CLERK 1300 10 MANAGER 2450 10 PRESIDENT 5000 20 ANALYST 6000 20 CLERK 1900... 9 rows selected.

18 5-18 Illegale Anfragen mit Gruppenfunktionen Jede Spalte oder Ausdruck in der SELECT Liste, welche nicht Aggregatfunktion sind, müssen in der GROUP BY Klausel ent- halten sein. SQL> SELECTdeptno, COUNT(ename) 2 FROMemp; SQL> SELECTdeptno, COUNT(ename) 2 FROMemp; SELECT deptno, COUNT(ename) * ERROR at line 1: ORA-00937: not a single-group group function SELECT deptno, COUNT(ename) * ERROR at line 1: ORA-00937: not a single-group group function Column missing in the GROUP BY clause

19 5-19 Illegale Anfragen mit Gruppenfunktionen WHERE-Klausel zum Filtern von Gruppen verboten. Dafür gibts die HAVING Klausel. WHERE-Klausel zum Filtern von Gruppen verboten. Dafür gibts die HAVING Klausel. SQL> SELECT deptno, AVG(sal) 2 FROM emp 3 WHERE AVG(sal) > 2000 4 GROUP BY deptno; SQL> SELECT deptno, AVG(sal) 2 FROM emp 3 WHERE AVG(sal) > 2000 4 GROUP BY deptno; WHERE AVG(sal) > 2000 * ERROR at line 3: ORA-00934: group function is not allowed here WHERE AVG(sal) > 2000 * ERROR at line 3: ORA-00934: group function is not allowed here Cannot use the WHERE clause to restrict groups to restrict groups Cannot use the WHERE clause to restrict groups to restrict groups

20 5-20 Ausschließen von Gruppen Maximales Gehalt pro Abteilung größer als $2900 EMP 5000 3000 2850 DEPTNO SAL --------- 10 2450 10 5000 10 1300 20 800 20 1100 20 3000 20 2975 30 1600 30 2850 30 1250 30 950 30 1500 30 1250 DEPTNO MAX(SAL) --------- 10 5000 20 3000

21 5-21 Ausschließen von Gruppen: HAVING Klausel HAVING Klausel zum Filtern von Gruppen – Zeilen werden gruppiert. – Gruppenfunktion angewendet. – Gruppen, die die HAVING Klausel erfüllen, werden angezeigt. HAVING Klausel zum Filtern von Gruppen – Zeilen werden gruppiert. – Gruppenfunktion angewendet. – Gruppen, die die HAVING Klausel erfüllen, werden angezeigt. SELECTcolumn, group_function FROMtable [WHEREcondition] [GROUP BYgroup_by_expression] [HAVINGgroup_condition] [ORDER BYcolumn];

22 5-22 Anwendung der HAVING Klausel SQL> SELECT deptno, max(sal) 2 FROM emp 3 GROUP BY deptno 4 HAVING max(sal)>2900; DEPTNO MAX(SAL) --------- 10 5000 20 3000

23 5-23 Anwendung der HAVING Klausel SQL> SELECT job, SUM(sal) PAYROLL 2 FROM emp 3 WHERE job NOT LIKE 'SALES%' 4 GROUP BY job 5 HAVING SUM(sal)>5000 6 ORDER BY SUM(sal); JOB PAYROLL --------- ANALYST 6000 MANAGER 8275

24 5-24 Schachtelung von Funktionen SQL> SELECT max(avg(sal)) 2 FROM emp 3 GROUP BY deptno; MAX(AVG(SAL)) ------------- 2916.6667 Wie groß ist das maximale Durchschnitts- gehalt in einer Abteilung?

25 5-25 Zusammenfassung SELECTcolumn, group_function(column) FROMtable [WHEREcondition] [GROUP BYgroup_by_expression] [HAVINGgroup_condition] [ORDER BYcolumn]; Reihenfolge der Auswertung der Klauseln: WHERE Klausel GROUP BY Klausel HAVING Klausel Reihenfolge der Auswertung der Klauseln: WHERE Klausel GROUP BY Klausel HAVING Klausel

26 5-26 Übungen Anwendung von Gruppenfunktionen in verschiedenen Anfragen Bildung von Gruppen zur Darstellung von mehreren Ergebnissen Ausschließen von Gruppen mittels HAVING Klausel Anwendung von Gruppenfunktionen in verschiedenen Anfragen Bildung von Gruppen zur Darstellung von mehreren Ergebnissen Ausschließen von Gruppen mittels HAVING Klausel


Herunterladen ppt "5 Verdichten von Daten mit Gruppenfunktionen. 5-2 Ziele Kennenlernen der vorhandenen Gruppenfunktionen Anwendung von Gruppenfunktionen Gruppieren von."

Ähnliche Präsentationen


Google-Anzeigen