SlideShare a Scribd company logo
1 of 26
Aggregating Data Using Group Functions
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
What Are Group Functions? Group functions operate on sets of rows to give one result per group. EMP    DEPTNO       SAL --------- --------- 102450 105000 101300 20800 201100 203000 203000 202975 301600 302850 301250 30950 301500 301250  MAX(SAL) --------- 5000 “maximum     salary in  the EMP table”
Types of Group Functions AVG  COUNT  MAX MIN  STDDEV  SUM VARIANCE
Using Group Functions SELECT	[column,] group_function(column) FROMtable [WHEREcondition] [GROUP BYcolumn] [ORDER BYcolumn];
Using AVG and SUM Functions You can use AVG and SUM for numeric data. SQL> SELECTAVG(sal), MAX(sal), 2MIN(sal), SUM(sal) 3FROMemp 4WHEREjob LIKE 'SALES%'; AVG(SAL)  MAX(SAL)  MIN(SAL)  SUM(SAL) -------- --------- --------- --------- 1400160012505600
Using MIN and MAX Functions You can use MIN and MAX for any datatype. SQL> SELECTMIN(hiredate), MAX(hiredate) 2  FROMemp; MIN(HIRED MAX(HIRED --------- --------- 17-DEC-8012-JAN-83
Using the COUNT Function COUNT(*) returns the number of rows in a table. SQL> SELECTCOUNT(*) 2  FROMemp 3  WHEREdeptno = 30;  COUNT(*) --------- 6
Using the COUNT Function COUNT(expr) returns the number of nonnull rows. SQL> SELECTCOUNT(comm) 2  FROMemp 3  WHEREdeptno = 30; 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
2916.6667 2175 1566.6667 Creating Groups of Data  EMP    DEPTNO       SAL --------- --------- 102450 105000 101300 20800 201100 203000 203000 202975 301600 302850 301250 30950 301500 301250    DEPTNO  AVG(SAL)   ------- --------- 102916.6667 202175 301566.6667 “averagesalary  in EMPtable  for each  department”
Creating Groups of Data: GROUP BY Clause SELECTcolumn, group_function(column) FROMtable [WHEREcondition] [GROUP BYgroup_by_expression] [ORDER BYcolumn]; Divide rows in a table into smaller groups by using the GROUP BY clause.
Using the GROUP BY Clause  All columns in the SELECT list that are not in group functions must be in the GROUP BY clause. SQL> SELECT   deptno, AVG(sal) 2  FROM     emp 3  GROUP BY deptno;    DEPTNO  AVG(SAL) --------- --------- 102916.6667 202175 301566.6667
Using the GROUP BY Clause  The GROUP BY column does not have to be in the SELECT list. SQL> SELECT   AVG(sal) 2  FROM     emp 3  GROUP BY deptno;  AVG(SAL) ---------  2916.6667 2175 1566.6667
Grouping by More Than One Column EMP    DEPTNO JOB             SAL --------- --------- --------- 10 MANAGER        2450 10 PRESIDENT      5000 10 CLERK          1300 20 CLERK           800 20 CLERK          1100 20 ANALYST        3000 20 ANALYST        3000 20 MANAGER        2975 30 SALESMAN       1600 30 MANAGER        2850 30 SALESMAN       1250 30 CLERK           950 30 SALESMAN       1500 30 SALESMAN       1250 JOB        SUM(SAL) --------- --------- CLERK          1300 MANAGER        2450 PRESIDENT      5000 ANALYST        6000 CLERK          1900 MANAGER        2975 CLERK           950 MANAGER        2850 SALESMAN       5600 DEPTNO -------- 10 10 10 20 20 20 30 30 30 “sum salaries in  the EMP tablefor each job,  grouped by  department”
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.
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> SELECTdeptno, COUNT(ename) 2  FROMemp; Column missing in the GROUP BY clause SELECT deptno, COUNT(ename)        * ERROR at line 1: ORA-00937: not a single-group group function
Illegal Queries Using Group Functions You cannot use the WHERE clause to restrict groups. You use the HAVING clause to restrict groups. SQL> SELECT deptno, AVG(sal) 2  FROM emp 3  WHERE AVG(sal) > 2000 4  GROUP BY deptno; Cannot use the WHERE clause             to restrict groups WHERE AVG(sal) > 2000       * ERROR at line 3: ORA-00934: group function is not allowed here
Excluding Group Results 5000 3000 2850 EMP    DEPTNO       SAL --------- --------- 102450 105000 101300 20800 201100 203000 203000 202975 301600 302850 301250 30950 301500 301250 “maximumsalaryper department greater than$2900”    DEPTNO  MAX(SAL) --------- --------- 105000 203000
Excluding Group Results: HAVING Clause Use the HAVING clause to restrict groups Rows are grouped. The group function is applied. Groups matching the HAVING clause are displayed. SELECTcolumn, group_function FROMtable [WHEREcondition] [GROUP BYgroup_by_expression] [HAVINGgroup_condition] [ORDER BYcolumn];
Using the HAVING Clause SQL> SELECT   deptno, max(sal) 2  FROM     emp 3  GROUP BY deptno 4  HAVING   max(sal)>2900;    DEPTNO  MAX(SAL) --------- --------- 105000 203000
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
Nesting Group Functions Display the maximum average salary.  SQL> SELECT   max(avg(sal)) 2  FROM     emp 3  GROUP BY deptno; MAX(AVG(SAL)) ------------- 2916.6667
Summary SELECTcolumn, group_function(column) FROMtable [WHEREcondition] [GROUP BYgroup_by_expression] [HAVINGgroup_condition] [ORDER BYcolumn]; Order of evaluation of the clauses: WHERE clause GROUP BY clause HAVING clause
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

More Related Content

What's hot (20)

Les03 Single Row Function
Les03 Single Row FunctionLes03 Single Row Function
Les03 Single Row Function
 
Les09 Manipulating Data
Les09 Manipulating DataLes09 Manipulating Data
Les09 Manipulating Data
 
Les00 Intoduction
Les00 IntoductionLes00 Intoduction
Les00 Intoduction
 
Les12
Les12Les12
Les12
 
Les01
Les01Les01
Les01
 
Les02
Les02Les02
Les02
 
Les10
Les10Les10
Les10
 
Les11
Les11Les11
Les11
 
Les09
Les09Les09
Les09
 
SQL WORKSHOP::Lecture 12
SQL WORKSHOP::Lecture 12SQL WORKSHOP::Lecture 12
SQL WORKSHOP::Lecture 12
 
SQL WORKSHOP::Lecture 5
SQL WORKSHOP::Lecture 5SQL WORKSHOP::Lecture 5
SQL WORKSHOP::Lecture 5
 
SQL WORKSHOP::Lecture 2
SQL WORKSHOP::Lecture 2SQL WORKSHOP::Lecture 2
SQL WORKSHOP::Lecture 2
 
ORACLE NOTES
ORACLE NOTESORACLE NOTES
ORACLE NOTES
 
COIS 420 - Practice02
COIS 420 - Practice02COIS 420 - Practice02
COIS 420 - Practice02
 
MERGE SQL Statement: Lesser Known Facets
MERGE SQL Statement: Lesser Known FacetsMERGE SQL Statement: Lesser Known Facets
MERGE SQL Statement: Lesser Known Facets
 
Les05[1]Aggregating Data Using Group Functions
Les05[1]Aggregating Data  Using Group FunctionsLes05[1]Aggregating Data  Using Group Functions
Les05[1]Aggregating Data Using Group Functions
 
Database Management System
Database Management SystemDatabase Management System
Database Management System
 
حل اسئلة الكتاب السعودى فى شرح قواعد البيانات اوراكل
حل اسئلة الكتاب السعودى فى شرح قواعد البيانات اوراكلحل اسئلة الكتاب السعودى فى شرح قواعد البيانات اوراكل
حل اسئلة الكتاب السعودى فى شرح قواعد البيانات اوراكل
 
Trig
TrigTrig
Trig
 
Les08-Oracle
Les08-OracleLes08-Oracle
Les08-Oracle
 

Viewers also liked (12)

Human Capital Group Functions
Human Capital Group FunctionsHuman Capital Group Functions
Human Capital Group Functions
 
Sets, functions and groups
Sets, functions and groupsSets, functions and groups
Sets, functions and groups
 
SQL WORKSHOP::Lecture 3
SQL WORKSHOP::Lecture 3SQL WORKSHOP::Lecture 3
SQL WORKSHOP::Lecture 3
 
PDC+++ Module 1 Class 3
PDC+++ Module 1 Class 3PDC+++ Module 1 Class 3
PDC+++ Module 1 Class 3
 
Ob9 foundations of group behavior
Ob9 foundations of group behaviorOb9 foundations of group behavior
Ob9 foundations of group behavior
 
Group behaviour ppt
Group behaviour pptGroup behaviour ppt
Group behaviour ppt
 
Group Behavior
Group BehaviorGroup Behavior
Group Behavior
 
Oracle Basics and Architecture
Oracle Basics and ArchitectureOracle Basics and Architecture
Oracle Basics and Architecture
 
Group behaviour ppt
Group behaviour pptGroup behaviour ppt
Group behaviour ppt
 
Groups in Organisations and Group Dynamics.
Groups in Organisations and Group Dynamics.Groups in Organisations and Group Dynamics.
Groups in Organisations and Group Dynamics.
 
Types of Organisation
 Types of Organisation Types of Organisation
Types of Organisation
 
ppt of group dynamics
ppt of group dynamicsppt of group dynamics
ppt of group dynamics
 

Similar to Les05 Aggregating Data Using Group Function

Similar to Les05 Aggregating Data Using Group Function (20)

SQL5.ppt
SQL5.pptSQL5.ppt
SQL5.ppt
 
Sql5
Sql5Sql5
Sql5
 
Sql query [select, sub] 4
Sql query [select, sub] 4Sql query [select, sub] 4
Sql query [select, sub] 4
 
Data Base Management Slides SQL with example
Data Base Management Slides SQL with exampleData Base Management Slides SQL with example
Data Base Management Slides SQL with example
 
Sql group by clause
Sql group by clauseSql group by clause
Sql group by clause
 
Aggregate Functions,Final
Aggregate Functions,FinalAggregate Functions,Final
Aggregate Functions,Final
 
Group by clause mod
Group by clause modGroup by clause mod
Group by clause mod
 
Les04
Les04Les04
Les04
 
Les04
Les04Les04
Les04
 
Cube rollup slides
Cube rollup slidesCube rollup slides
Cube rollup slides
 
Les05
Les05Les05
Les05
 
Les01-Oracle
Les01-OracleLes01-Oracle
Les01-Oracle
 
Select To Order By
Select  To  Order BySelect  To  Order By
Select To Order By
 
SQL.pptx
SQL.pptxSQL.pptx
SQL.pptx
 
Chapter5.ppt
Chapter5.pptChapter5.ppt
Chapter5.ppt
 
Sql dml & tcl 2
Sql   dml & tcl 2Sql   dml & tcl 2
Sql dml & tcl 2
 
Oracle tips and tricks
Oracle tips and tricksOracle tips and tricks
Oracle tips and tricks
 
SQL (1).pptx
SQL (1).pptxSQL (1).pptx
SQL (1).pptx
 
e computer notes - Enhancements to the group by clause
e computer notes - Enhancements to the group by clausee computer notes - Enhancements to the group by clause
e computer notes - Enhancements to the group by clause
 
SQL/MX 3.6 Select for update feature
SQL/MX 3.6 Select for update featureSQL/MX 3.6 Select for update feature
SQL/MX 3.6 Select for update feature
 

Recently uploaded

Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 

Recently uploaded (20)

Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 

Les05 Aggregating Data Using Group Function

  • 1. Aggregating Data Using Group Functions
  • 2. 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
  • 3. What Are Group Functions? Group functions operate on sets of rows to give one result per group. EMP DEPTNO SAL --------- --------- 102450 105000 101300 20800 201100 203000 203000 202975 301600 302850 301250 30950 301500 301250 MAX(SAL) --------- 5000 “maximum salary in the EMP table”
  • 4. Types of Group Functions AVG COUNT MAX MIN STDDEV SUM VARIANCE
  • 5. Using Group Functions SELECT [column,] group_function(column) FROMtable [WHEREcondition] [GROUP BYcolumn] [ORDER BYcolumn];
  • 6. Using AVG and SUM Functions You can use AVG and SUM for numeric data. SQL> SELECTAVG(sal), MAX(sal), 2MIN(sal), SUM(sal) 3FROMemp 4WHEREjob LIKE 'SALES%'; AVG(SAL) MAX(SAL) MIN(SAL) SUM(SAL) -------- --------- --------- --------- 1400160012505600
  • 7. Using MIN and MAX Functions You can use MIN and MAX for any datatype. SQL> SELECTMIN(hiredate), MAX(hiredate) 2 FROMemp; MIN(HIRED MAX(HIRED --------- --------- 17-DEC-8012-JAN-83
  • 8. Using the COUNT Function COUNT(*) returns the number of rows in a table. SQL> SELECTCOUNT(*) 2 FROMemp 3 WHEREdeptno = 30; COUNT(*) --------- 6
  • 9. Using the COUNT Function COUNT(expr) returns the number of nonnull rows. SQL> SELECTCOUNT(comm) 2 FROMemp 3 WHEREdeptno = 30; COUNT(COMM) ----------- 4
  • 10. Group Functions and Null Values Group functions ignore null values in the column. SQL> SELECT AVG(comm) 2 FROM emp; AVG(COMM) --------- 550
  • 11. 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
  • 12. 2916.6667 2175 1566.6667 Creating Groups of Data EMP DEPTNO SAL --------- --------- 102450 105000 101300 20800 201100 203000 203000 202975 301600 302850 301250 30950 301500 301250 DEPTNO AVG(SAL) ------- --------- 102916.6667 202175 301566.6667 “averagesalary in EMPtable for each department”
  • 13. Creating Groups of Data: GROUP BY Clause SELECTcolumn, group_function(column) FROMtable [WHEREcondition] [GROUP BYgroup_by_expression] [ORDER BYcolumn]; Divide rows in a table into smaller groups by using the GROUP BY clause.
  • 14. Using the GROUP BY Clause All columns in the SELECT list that are not in group functions must be in the GROUP BY clause. SQL> SELECT deptno, AVG(sal) 2 FROM emp 3 GROUP BY deptno; DEPTNO AVG(SAL) --------- --------- 102916.6667 202175 301566.6667
  • 15. Using the GROUP BY Clause The GROUP BY column does not have to be in the SELECT list. SQL> SELECT AVG(sal) 2 FROM emp 3 GROUP BY deptno; AVG(SAL) --------- 2916.6667 2175 1566.6667
  • 16. Grouping by More Than One Column EMP DEPTNO JOB SAL --------- --------- --------- 10 MANAGER 2450 10 PRESIDENT 5000 10 CLERK 1300 20 CLERK 800 20 CLERK 1100 20 ANALYST 3000 20 ANALYST 3000 20 MANAGER 2975 30 SALESMAN 1600 30 MANAGER 2850 30 SALESMAN 1250 30 CLERK 950 30 SALESMAN 1500 30 SALESMAN 1250 JOB SUM(SAL) --------- --------- CLERK 1300 MANAGER 2450 PRESIDENT 5000 ANALYST 6000 CLERK 1900 MANAGER 2975 CLERK 950 MANAGER 2850 SALESMAN 5600 DEPTNO -------- 10 10 10 20 20 20 30 30 30 “sum salaries in the EMP tablefor each job, grouped by department”
  • 17. 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.
  • 18. 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> SELECTdeptno, COUNT(ename) 2 FROMemp; Column missing in the GROUP BY clause SELECT deptno, COUNT(ename) * ERROR at line 1: ORA-00937: not a single-group group function
  • 19. Illegal Queries Using Group Functions You cannot use the WHERE clause to restrict groups. You use the HAVING clause to restrict groups. SQL> SELECT deptno, AVG(sal) 2 FROM emp 3 WHERE AVG(sal) > 2000 4 GROUP BY deptno; Cannot use the WHERE clause to restrict groups WHERE AVG(sal) > 2000 * ERROR at line 3: ORA-00934: group function is not allowed here
  • 20. Excluding Group Results 5000 3000 2850 EMP DEPTNO SAL --------- --------- 102450 105000 101300 20800 201100 203000 203000 202975 301600 302850 301250 30950 301500 301250 “maximumsalaryper department greater than$2900” DEPTNO MAX(SAL) --------- --------- 105000 203000
  • 21. Excluding Group Results: HAVING Clause Use the HAVING clause to restrict groups Rows are grouped. The group function is applied. Groups matching the HAVING clause are displayed. SELECTcolumn, group_function FROMtable [WHEREcondition] [GROUP BYgroup_by_expression] [HAVINGgroup_condition] [ORDER BYcolumn];
  • 22. Using the HAVING Clause SQL> SELECT deptno, max(sal) 2 FROM emp 3 GROUP BY deptno 4 HAVING max(sal)>2900; DEPTNO MAX(SAL) --------- --------- 105000 203000
  • 23. 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
  • 24. Nesting Group Functions Display the maximum average salary. SQL> SELECT max(avg(sal)) 2 FROM emp 3 GROUP BY deptno; MAX(AVG(SAL)) ------------- 2916.6667
  • 25. Summary SELECTcolumn, group_function(column) FROMtable [WHEREcondition] [GROUP BYgroup_by_expression] [HAVINGgroup_condition] [ORDER BYcolumn]; Order of evaluation of the clauses: WHERE clause GROUP BY clause HAVING clause
  • 26. 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