SQL Statements 4
SQL Statements 4
SQL Statements 4
– AVG
– COUNT
– MAX
– MIN
– STDDEV
– SUM
– VARIANCE
Using Group Functions
MIN(HIRED MAX(HIRED
--------- ---------
17-DEC-80 12-JAN-83
Using the COUNT Function
• COUNT(*) returns the number of rows
in a table.
SQL> SELECT COUNT(*)
2 FROM emp
3 WHERE deptno = 30;
COUNT(*)
---------
6
Using the COUNT Function
COUNT(COMM)
-----------
4
Group Functions and Null
Values
• Group functions ignore null values in
the column.
SQL> SELECT AVG(comm)
2 FROM emp;
AVG(COMM)
---------
550
Using the NVL Function
with Group Functions
• The NVL function forces group functions to
include null values.
SQL> SELECT AVG(NVL(comm,0))
2 FROM emp;
AVG(NVL(COMM,0))
----------------
157.14286
Creating Groups of Data
EMP
DEPTNO SAL
--------- ---------
10 2450
10 5000 2916.6667
10 1300
“average DEPTNO AVG(SAL)
20 800
20 1100 salary ------- ---------
20 3000 2175 in EMP 10 2916.6667
20 3000 table
20 2975 for each 20 2175
30 1600 department” 30 1566.6667
30 2850
30 1250 1566.6667
30 950
30 1500
30 1250
Creating Groups of Data:
GROUP BY Clause
SELECT column, group_function(column)
FROM table
[WHERE condition]
[GROUP BY group_by_expression]
[ORDER BY column];
DEPTNO AVG(SAL)
--------- ---------
10 2916.6667
20 2175
30 1566.6667
Using the GROUP BY Clause
AVG(SAL)
---------
2916.6667
2175
1566.6667
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
Using the GROUP BY Clause
on Multiple Columns
SQL> SELECT deptno, job, sum(sal)
2 FROM emp
3 GROUP BY deptno, job;
DEPTNO MAX(SAL)
--------- ---------
10 5000
20 3000
Using the HAVING Clause
JOB PAYROLL
--------- ---------
ANALYST 6000
MANAGER 8275
Nesting Group Functions
• Display the maximum average salary.
MAX(AVG(SAL))
-------------
2916.6667
Summary
SELECT column, group_function(column)
FROM table
[WHERE condition]
[GROUP BY group_by_expression]
[HAVING group_condition]
[ORDER BY column];