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
 
Sql having clause
Sql having clauseSql having clause
Sql having clause
 
Select To Order By
Select  To  Order BySelect  To  Order By
Select To Order By
 
5. Group Functions
5. Group Functions5. Group Functions
5. Group Functions
 
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
 

Recently uploaded

How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 

Recently uploaded (20)

How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 

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