Beruflich Dokumente
Kultur Dokumente
Aggregating Data
Using Group Functions
Copyright
Objectives
After completing this lesson, you should
be able to do the following:
Identify the available group functions
Describe the use of group functions
Group data using the GROUP BY clause
Include or exclude grouped rows by
using the HAVING clause
5-2
Copyright
Copyright
maximum
salary in
the EMP table
MAX(SAL)
--------5000
Copyright
SELECT
FROM
[WHERE
[GROUP BY
[ORDER BY
5-5
[column,] group_function(column)
table
condition]
column]
column];
Copyright
AVG(sal), MAX(sal),
MIN(sal), SUM(sal)
emp
job LIKE 'SALES%';
5-6
Copyright
MIN(hiredate), MAX(hiredate)
emp;
MIN(HIRED MAX(HIRED
--------- --------17-DEC-80 12-JAN-83
5-7
Copyright
COUNT(*)
emp
deptno = 30;
COUNT(*)
--------6
5-8
Copyright
COUNT(comm)
emp
deptno = 30;
COUNT(COMM)
----------4
5-9
Copyright
AVG(COMM)
--------550
5-10
Copyright
AVG(NVL(COMM,0))
---------------157.14286
5-11
Copyright
Copyright
2916.6667
DEPTNO AVG(SAL)
average
salary
------- --------in EMP
2175
10 2916.6667
table
20
2175
for each
30 1566.6667
department
1566.6667
column, group_function(column)
table
condition]
group_by_expression]
column];
5-13
Copyright
DEPTNO AVG(SAL)
--------- --------10 2916.6667
20
2175
30 1566.6667
5-14
Copyright
AVG(SAL)
--------2916.6667
2175
1566.6667
5-15
Copyright
EMP
DEPTNO
--------10
10
10
20
20
20
20
20
30
30
30
30
30
30
5-16
Grouping by More
Than One Column
JOB
SAL
--------- --------MANAGER
2450
PRESIDENT
5000
CLERK
1300
CLERK
800
CLERK
1100
ANALYST
3000
ANALYST
3000
MANAGER
2975
SALESMAN
1600
MANAGER
2850
SALESMAN
1250
CLERK
950
SALESMAN
1500
SALESMAN
1250
Copyright
sum salaries in
the EMP table
for each job,
grouped by
department
DEPTNO
-------10
10
10
20
20
20
30
30
30
JOB
SUM(SAL)
--------- --------CLERK
1300
MANAGER
2450
PRESIDENT
5000
ANALYST
6000
CLERK
1900
MANAGER
2975
CLERK
950
MANAGER
2850
SALESMAN
5600
DEPTNO JOB
SUM(SAL)
--------- --------- --------10 CLERK
1300
10 MANAGER
2450
10 PRESIDENT
5000
20 ANALYST
6000
20 CLERK
1900
...
9 rows selected.
5-17
Copyright
Illegal Queries
Using Group Functions
Any column or expression in the SELECT
list that is not an aggregate function must
be in the GROUP BY clause.
SQL>
SQL>
22
SELECT
SELECT
FROM
FROM
deptno,
deptno, COUNT(ename)
COUNT(ename)
se
u
a
l
c
emp;
Y
B
emp;
ROUP
eG
h
t
n
i
g
n
i
iss
m
n
m
u
l
o
C
SELECT
SELECT deptno,
deptno, COUNT(ename)
COUNT(ename)
**
ERROR
ERROR at
at line
line 1:
1:
ORA-00937:
ORA-00937: not
not aa single-group
single-group group
group function
function
5-18
Copyright
Illegal Queries
Using Group Functions
You cannot use the WHERE clause to restrict
groups.
You use the HAVING clause to restrict groups.
SQL>
SQL>
22
33
44
SELECT
SELECT
FROM
FROM
WHERE
WHERE
GROUP
GROUP BY
BY
deptno,
deptno, AVG(sal)
AVG(sal)
emp
emp
AVG(sal)
AVG(sal) >> 2000
2000
deptno;
deptno;
se
u
cl a
RE s
E
H up
W
o
e
r
h
g
t ct
e
WHERE
AVG(sal)
>
2000
i
s
WHERE AVG(sal) > 2000 u
r
t
es
**
ot
r
n
n
to
ERROR
ERROR at
at line
line 3:
3:Ca
ORA-00934:
ORA-00934: group
group function
function is
is not
not allowed
allowed here
here
5-19
Copyright
5-20
Copyright
5000
3000
maximum
salary
per department
greater than
$2900
DEPTNO MAX(SAL)
--------- --------10
5000
20
3000
2850
are displayed.
SELECT
FROM
[WHERE
[GROUP BY
[HAVING
[ORDER BY
5-21
column, group_function
table
condition]
group_by_expression]
group_condition]
column];
Copyright
SELECT
FROM
GROUP BY
HAVING
deptno, max(sal)
emp
deptno
max(sal)>2900;
DEPTNO MAX(SAL)
--------- --------10
5000
20
3000
5-22
Copyright
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
JOB
PAYROLL
--------- --------ANALYST
6000
MANAGER
8275
5-23
Copyright
5-24
Copyright
Summary
SELECT
FROM
[WHERE
[GROUP BY
[HAVING
[ORDER BY
column, group_function(column)
table
condition]
group_by_expression]
group_condition]
column];
Copyright
Practice Overview
Showing different queries that use group functions
Grouping by rows to achieve more than one result
Excluding groups by using the HAVING clause
5-26
Copyright