100% found this document useful (1 vote)
99 views26 pages

Aggregating Data Using Group Functions

Group functions operate on sets of rows to provide a single result for each group. Some common group functions include AVG, COUNT, MAX, MIN, and SUM. The GROUP BY clause is used to divide rows into smaller groups and must be used with group functions. It groups the rows based on the specified column(s).
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
99 views26 pages

Aggregating Data Using Group Functions

Group functions operate on sets of rows to provide a single result for each group. Some common group functions include AVG, COUNT, MAX, MIN, and SUM. The GROUP BY clause is used to divide rows into smaller groups and must be used with group functions. It groups the rows based on the specified column(s).
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 26

5

Aggregating Data
Using Group Functions
Objectives

After
After completing
completing this
this lesson,
lesson, you
you should
should
be
be able
able to
to do
do the
the following:
following:
•• Identify
Identify the
the available
available group
group functions
functions
•• Describe
Describe thethe use
use of
of group
group functions
functions
•• Group
Group data
data using
using the
the GROUP
GROUP BY
BY clause
clause
•• Include
Include or
or exclude
exclude grouped
grouped rows
rows by
by
using
using the
the HAVING
HAVING clause
clause

5-2
What Are Group Functions?
Group
Group functions
functions operate
operate on
on sets
sets of
of rows
rows to
to give
give
one
one result
result per
per group.
group.
EMP
DEPTNO SAL
--------- ---------
10 2450
10 5000
10 1300
20 800
20 1100
20 3000 “maximum MAX(SAL)
20 3000 salary in ---------
20 2975 the EMP table” 5000
30 1600
30 2850
30 1250
30 950
30 1500
30 1250
5-3
Types of Group Functions

•• AVG
AVG
•• COUNT
COUNT
•• MAX
MAX
•• MIN
MIN
•• STDDEV
STDDEV
•• SUM
SUM
•• VARIANCE
VARIANCE

5-4
Using Group Functions

SELECT [column,] group_function(column)


FROM table
[WHERE condition]
[GROUP BY column]
[ORDER BY column];

5-5
Using AVG and SUM Functions
You
You can
can use
use AVG
AVG and
and SUM
SUM for
for numeric
numeric data.
data.
SQL> SELECT AVG(sal), MAX(sal),
2 MIN(sal), SUM(sal)
3 FROM emp
4 WHERE job LIKE 'SALES%';

AVG(SAL) MAX(SAL) MIN(SAL) SUM(SAL)


-------- --------- --------- ---------
1400 1600 1250 5600

5-6
Using MIN and MAX Functions
You
You can
can use
use MIN
MIN and
and MAX
MAX for
for any
any datatype.
datatype.
SQL> SELECT MIN(hiredate), MAX(hiredate)
2 FROM emp;

MIN(HIRED MAX(HIRED
--------- ---------
17-DEC-80 12-JAN-83

5-7
Using the COUNT Function
COUNT(*)
COUNT(*) returns
returns the
the number
number of
of rows
rows in
in aa
table.
table.
SQL> SELECT COUNT(*)
2 FROM emp
3 WHERE deptno = 30;

COUNT(*)
---------
6

5-8
Using the COUNT Function
COUNT(
COUNT(expr
expr)) returns
returns the
the number
number of
of
nonnull
nonnull rows.
rows.
SQL> SELECT COUNT(comm)
2 FROM emp
3 WHERE deptno = 30;

COUNT(COMM)
-----------
4

5-9
Group Functions and Null Values
Group
Group functions
functions ignore
ignore null
null values
values in
in the
the
column.
column.
SQL> SELECT AVG(comm)
2 FROM emp;

AVG(COMM)
---------
550

5-10
Using the NVL Function
with Group Functions
The
The NVL
NVL function
function forces
forces group
group functions
functions
to
to include
include null
null values.
values.

SQL> SELECT AVG(NVL(comm,0))


2 FROM emp;

AVG(NVL(COMM,0))
----------------
157.14286

5-11
Creating Groups of Data
EMP
DEPTNO SAL
--------- ---------
10 2450
10 5000 2916.6667
10 1300
20 800 “average DEPTNO AVG(SAL)
20 1100 salary
------- ---------
20 3000 2175 in EMP
20 3000 table 10 2916.6667
20 2975 for each 20 2175
30 1600 department” 30 1566.6667
30 2850
30 1250 1566.6667
30 950
30 1500
30 1250

5-12
Creating Groups of Data:
GROUP BY Clause

SELECT column, group_function(column)


FROM table
[WHERE condition]
[GROUP BY group_by_expression]
[ORDER BY column];

Divide
Divide rows
rows in
in aa table
table into
into smaller
smaller groups
groups
by
by using
using the
the GROUP
GROUP BY BY clause.
clause.

5-13
Using the GROUP BY Clause
All
All columns
columns in
in the
the SELECT
SELECT list
list that
that are
are not
not
in
in group
group functions
functions must
must be
be in
in the
the GROUP
GROUP
BY
BY clause.
clause.
SQL> SELECT deptno, AVG(sal)
2 FROM emp
3 GROUP BY deptno;

DEPTNO AVG(SAL)
--------- ---------
10 2916.6667
20 2175
30 1566.6667

5-14
Using the GROUP BY Clause
The
The GROUP
GROUP BYBY column
column does
does not
not have
have to
to
be
be in
in the
the SELECT
SELECT list.
list.
SQL> SELECT AVG(sal)
2 FROM emp
3 GROUP BY deptno;

AVG(SAL)
---------
2916.6667
2175
1566.6667

5-15
Grouping by More
EMP
Than One Column
DEPTNO JOB SAL
--------- --------- ---------
10 MANAGER 2450
DEPTNO JOB SUM(SAL)
10 PRESIDENT 5000
-------- --------- ---------
10 CLERK 1300
10 CLERK 1300
20 CLERK 800 “sum salaries in 10 MANAGER 2450
20 CLERK 1100 the EMP table
10 PRESIDENT 5000
20 ANALYST 3000 for each job,
20 ANALYST 6000
20 ANALYST 3000 grouped by
20 CLERK 1900
20 MANAGER 2975 department”
20 MANAGER 2975
30 SALESMAN 1600
30 CLERK 950
30 MANAGER 2850
30 MANAGER 2850
30 SALESMAN 1250
30 SALESMAN 5600
30 CLERK 950
30 SALESMAN 1500
30 SALESMAN 1250

5-16
Using the GROUP BY Clause
on Multiple Columns
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.

5-17
Illegal Queries
Using Group Functions
Any
Any column
column oror expression
expression in
in the
the SELECT
SELECT
list
list that
that is
is not
not an
an aggregate
aggregate function
function must
must
be
be inin the
the GROUP
GROUP BYBY clause.
clause.

SQL>
SQL> SELECT
SELECT deptno,
deptno, COUNT(ename)
COUNT(ename)
BYY c
c l
l a
auussee
22 FROM
FROM emp;
emp;
n RO
t
thOU
h UPPB
GR
ee G RO
m i
iissssinngg i
i n
o l u
ummn
n m
Col
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
Illegal Queries
Using Group Functions
•• You
You cannot
cannot use
use the
the WHERE
WHERE clause
clause to
to restrict
restrict
groups.
groups.
•• You
You use
use the
the HAVING
HAVING clause
clause to
to restrict
restrict groups.
groups.
SQL>
SQL> SELECT
SELECT deptno,
deptno, AVG(sal)
AVG(sal)
s
s ee
22 FROM
FROM emp
emp l u
aau
33 WHERE AVG(sal)
AVG(sal) >> 2000 c
c l
WHERE 2000
R EE
R ss
44 GROUP
GROUP BY
BY deptno;
deptno; HEE
H uupp
e W
W r oo
h e
tth ctt g g r
WHERE AVG(sal) > 2000
WHERE AVG(sal) > 2000 u s
s e
e r
riic
u
tt reess t
t
** n
noo r
ann t
t o
o
ERROR
ERROR at
at line
line 3:Ca
3:C
ORA-00934: group function is not allowed here
ORA-00934: group function is not allowed here

5-19
Excluding Group Results
EMP
DEPTNO SAL
--------- ---------
10 2450
10 5000 5000
10 1300
20 800
20 1100 “maximum DEPTNO MAX(SAL)
20 3000 salary --------- ---------
3000
20 3000 per department 10 5000
20 2975 greater than 20 3000
30 1600 $2900”
30 2850
30 1250
30 950
2850
30 1500
30 1250

5-20
Excluding Group Results:
HAVING Clause
Use
Use the
the HAVING
HAVING clause
clause to
to restrict
restrict groups
groups
–– Rows
Rows are
are grouped.
grouped.
–– The
The group
group function
function is
is applied.
applied.
–– Groups
Groups matching
matching the
the HAVING
HAVING clause
clause
are
are displayed.
displayed.
SELECT column, group_function
FROM table
[WHERE condition]
[GROUP BY group_by_expression]
[HAVING group_condition]
[ORDER BY column];

5-21
Using the HAVING Clause

SQL> SELECT deptno, max(sal)


2 FROM emp
3 GROUP BY deptno
4 HAVING max(sal)>2900;

DEPTNO MAX(SAL)
--------- ---------
10 5000
20 3000

5-22
Using the HAVING Clause

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

5-23
Nesting Group Functions
Display
Display the
the maximum
maximum average
average salary.
salary.

SQL> SELECT max(avg(sal))


2 FROM emp
3 GROUP BY deptno;

MAX(AVG(SAL))
-------------
2916.6667

5-24
Summary
SELECT column, group_function(column)
FROM table
[WHERE condition]
[GROUP BY group_by_expression]
[HAVING group_condition]
[ORDER BY column];

Order
Order of
of evaluation
evaluation of
of the
the clauses:
clauses:
•• WHERE
WHERE clause
clause
•• GROUP
GROUP BY
BY clause
clause
•• HAVING
HAVING clause
clause

5-25
Practice Overview
• •Showing
Showingdifferent
differentqueries
queriesthat
thatuse
usegroup
groupfunctions
functions
• •Grouping
Groupingby
byrows
rowsto
toachieve
achievemore
morethan
thanone
oneresult
result
• •Excluding
Excludinggroups
groupsby
byusing
usingthe
theHAVING
HAVINGclause
clause

5-26

You might also like