Lab05.pptx
Lab05.pptx
• Group functions:
– Types and syntax
– Use AVG, SUM, MIN, MAX, COUNT
– Use DISTINCT keyword within group
functions
– NULL values in a group function
• Grouping rows:
– GROUP BY clause
– HAVING clause
• Nesting group functions
5-2
What Are Group Functions?
Maximum salary in
EMPLOYEES table
5-3
Types of Group Functions
• AVG
• COUNT
• MAX
• MIN
Group
• STDDEV functions
• SUM
• VARIANCE
5-4
Group Functions: Syntax
5-5
Using the AVG and SUM
Functions
You can use AVG and SUM for numeric
data.
SELECT AVG(salary), MAX(salary),
MIN(salary), SUM(salary)
FROM employees
WHERE job_id LIKE '%REP%';
5-6
Using the MIN and MAX
Functions
You can use MIN and MAX for numeric, character, and
date data types.
5-7
Using the COUNT
Function
COUNT(*) returns the number of rows in a
table:
SELECT COUNT(*)
1 FROM employees
WHERE department_id = 50;
5-8
Using the DISTINCT
Keyword
• COUNT(DISTINCT expr) returns the number of
distinct non-null values of expr.
• To display the number of distinct department values in the
EMPLOYEES table:
5-9
Group Functions and Null Values
5 - 10
Lesson Agenda
• Group functions:
– Types and syntax
– Use AVG, SUM, MIN, MAX, COUNT
– Use DISTINCT keyword within group
functions
– NULL values in a group function
• Grouping rows:
– GROUP BY clause
– HAVING clause
• Nesting group functions
5 - 11
Creating Groups of Data
EMPLOYEES
Average salary in
4400
EMPLOYEES table
9500
for each
department
3500
6400
10033
5 - 12
Creating Groups of Data:
GROUP BY Clause
SELECT Syntax
column, group_function(column)
FROM table
[WHERE condition]
[GROUP BY group_by_expression]
[ORDER BY column];
You can divide rows in a table into smaller groups by using the
GROUP BY clause.
5 - 13
Using the GROUP BY
Clause
All columns in the SELECT list that are not in group
functions must be in the GROUP BY clause.
5 - 14
Using the GROUP BY
Clause
The GROUP BY column does not have to be in the SELECT
list.
SELECT AVG(salary)
FROM employees
GROUP BY department_id ;
5 - 15
Grouping by More than One Column
5 - 16
Using the GROUP BY
Clause on Multiple
Columns
SELECT department_id, job_id, SUM(salary)
FROM employees
WHERE department_id > 40
GROUP BY department_id, job_id
ORDER BY department_id;
5 - 17
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:
5 - 18
Illegal Queries
Using Group Functions
• You cannot use the WHERE clause to restrict groups.
• You use the HAVING clause to restrict groups.
• You cannot use group functions in the WHERE clause.
SELECT department_id, AVG(salary)
FROM employees
WHERE AVG(salary) > 8000
GROUP BY department_id;
5 - 19
Restricting Group Results
EMPLOYEES
5 - 20
Restricting Group Results
with the HAVING Clause
When you use the HAVING clause, the Oracle server
restricts groups as follows:
1. Rows are grouped.
2. The group function is applied.
3. Groups matching the HAVING clause are displayed.
5 - 21
Using the HAVING
Clause
5 - 22
Using the HAVING
Clause
5 - 23
Lesson Agenda
• Group functions:
– Types and syntax
– Use AVG, SUM, MIN, MAX, COUNT
– Use DISTINCT keyword within group
functions
– NULL values in a group function
• Grouping rows:
– GROUP BY clause
– HAVING clause
• Nesting group functions
5 - 24
Nesting Group Functions
SELECT MAX(AVG(salary))
FROM employees
GROUP BY department_id;
5 - 25
Quiz
5 - 26
Summary
5 - 27
Practice 5: Overview
5 - 28