Aggregate Row Functions.
AGGREGATE ROW FUCTIONS
• Aggregate Row functions give the user the
ability to answer business questions such as:
What is the average salary of an employee
in the company?
What were the total salaries for a particular
year?
What are the maximum and minimum
salaries in the Computer’s Department?
AGGREGATE ROW FUCTIONS
• Aggregate functions perform a variety of
actions such as counting all the rows in a
table, averaging a column's data, and
summing numeric data.
• Aggregates can also search a table to find
the highest "MAX" or lowest "MIN" values
in a column.
AGGREGATE ROW FUCTIONS
• List of aggregate functions including their syntax
and use.
Function Syntax Function Use
SUM( [ALL | DISTINCT] The total of the (distinct) values in a
expression ) numeric column/expression.
AVG( [ALL | DISTINCT] The average of the (distinct) values in a
expression ) numeric column/expression.
COUNT( [ALL | The number of (distinct) non-NULL values
DISTINCT] expression ) in a column/expression.
COUNT(*) The number of selected rows.
MAX(expression) The highest value in a column/expression.
MIN(expression) The lowest value in a column/expression.
AGGREGATE ROW FUCTIONS
• There are two rules that you must understand and
follow when using aggregates:
• Aggregate functions can be used in both the SELECT
and HAVING clauses (the HAVING clause is covered
later in this chapter).
• Aggregate functions cannot be used in a WHERE
clause.
EXAMPLE
• The following query is wrong and will produce the
Oracle ORA-00934 group function is not allowed
here error message.
SELECT *
FROM employee
WHERE emp_salary > AVG(emp_salary);
ERROR
COUNT( )
• If a manager needs know how many employees work in
the organization, COUNT(*) can be used to produce
this information.
• The COUNT(*) function counts all rows in a table.
• The wild card asterisk (*) would be used as the
parameter in the function.
SELECT COUNT(*)
FROM employee;
COUNT(*)
--------
8
COUNT( )
• The result table for the COUNT(*) function
is a single scalar value.
• Notice that the result table has a column
heading that corresponds to the name of the
aggregate function specified in the SELECT
clause.
• The output column can be assigned a more
meaningful column name as is shown in the
revised query .
COUNT( )
• This is accomplished by simply listing the desired
column name inside double-quotes after the
aggregate function specification.
SELECT COUNT(*) "Number of
Employees"
FROM employee;
Number of Employees
---------------------------
8
COUNT( )
• COUNT(*) is used to count all the rows in a table.
• COUNT(column name) does almost the same thing.
The difference is that you may define a specific
column to be counted.
• When column name is specified in the COUNT
function, rows containing a NULL value in the
specified column are omitted.
• A NULL value stands for “unknown” or
“unknowable” and must not be confused with a blank
or zero.
COUNT ( )
SELECT COUNT(emp_superssn) "Number Supervised
Employees"
FROM employee;
Number Supervised Employees
---------------------------
7
• In contrast the count(*) will count each row
regardless of NULL values.
SELECT COUNT(*) "Number of Employees“
FROM employee;
Number of Employees
-------------------
8
Using the AVG Function
• AVG function is used to compute the average value for
the emp_salary column in the employee table.
• For example, the following query returns the average of
the employee salaries.
SELECT AVG(emp_salary) "Average Employee
Salary"
FROM employee;
Average Employee Salary
-----------------------
$35,500
More Examples
• What is the average salary offered to employees?
• This question asks you to incorporate the concept of
computing the average of the distinct salaries paid by the
organization.
• The same query with the DISTINCT keyword in the
aggregate function returns a different average.
SELECT AVG(DISTINCT emp_salary) "Average Employee
Salary"
FROM employee;
Average Employee Salary
-----------------------
$38,200
Using the SUM Function
• The SUM function can compute the total of a
specified table column.
• The SELECT statement shown here will return the
total of the emp_salary column from the employee
table.
SELECT SUM(emp_salary) "Total Salary"
FROM employee;
Total Salary
------------
$284,000
More Examples
• If management is preparing a budget for various
departments, you may be asked to write a query to
compute the total salary for different departments.
• The query shown here will compute the total
emp_salary for employees assigned to department
#7.
SELECT SUM(emp_salary) "Total Salary Dept 7"
FROM employee
WHERE emp_dpt_number = 7;
Total Salary Dept 7
-------------------
$136,000
MIN and MAX Functions
• The MIN function returns the lowest value stored in
a data column.
• The MAX function returns the largest value stored
in a data column.
• Unlike SUM and AVG, the MIN and MAX
functions work with both numeric and character data
columns.
Example
• A query that uses the MIN function to find the lowest value
stored in the emp_last_name column of the employee table.
• This is analogous to determine which employee's last name
comes first in the alphabet.
• Conversely, MAX() will return the employee row where last
name comes last (highest) in the alphabet.
SELECT MIN(emp_last_name), MAX(emp_last_name)
FROM employee;
MIN(EMP_LAST_NAME) MAX(EMP_LAST_NAME)
------------------------- -----------------------
Amin Zhu
Using GROUP BY with Aggregate Functions
• The power of aggregate functions is greater when
combined with the GROUP BY clause.
• In fact, the GROUP BY clause is rarely used without
an aggregate function.
• It is possible to use the GROUP BY clause without
aggregates, but such a construction has very limited
functionality, and could lead to a result table that is
confusing or misleading.
Bordoloi and Bock
Example
• The following query displays how many employees
work for each department?
SELECT emp_dpt_number "Department",
COUNT(*) "Department Count"
FROM employee
GROUP BY emp_dpt_number;
Department Department Count
---------- ----------------
1 1
3 3
7 4
Bordoloi and Bock