SlideShare a Scribd company logo
1 of 31
Download to read offline
Oracle OCP 考试系列培训
                 之
          1Z0-007 Lesson4
                          www.OracleOnLinux.cn




4-1   Copyright © 2012,   www.OracleOnLinux . All rights reserved.
                              OracleOnLinux
                              OracleOnLinux.cn
4
              Reporting Aggregated Data
              Using the Group Functions




4-2   Copyright © 2012,   www.OracleOnLinux . All rights reserved.
                              OracleOnLinux
                              OracleOnLinux.cn
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 by using the GROUP BY clause
       • Include or exclude grouped rows by using the
           HAVING clause




4-3        Copyright © 2012,   www.OracleOnLinux . All rights reserved.
                                   OracleOnLinux
                                   OracleOnLinux.cn
What Are Group Functions?

      Group functions operate on sets of rows to give one
      result per group.
        EMPLOYEES




                                          Maximum salary in
                                          EMPLOYEES table




        …

4-4         Copyright © 2012,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Types of Group Functions


      •   AVG
      •   COUNT
      •   MAX
                                                    Group
      •   MIN                                     functions
      •   STDDEV
      •   SUM
      •   VARIANCE




4-5        Copyright © 2012,   www.OracleOnLinux . All rights reserved.
                                   OracleOnLinux
                                   OracleOnLinux.cn
Group Functions: Syntax


      SELECT    [column,] group_function(column), ...
      FROM      table
      [WHERE    condition]
      [GROUP BY column]
      [ORDER BY column];




4-6       Copyright © 2012,   www.OracleOnLinux . All rights reserved.
                                  OracleOnLinux
                                  OracleOnLinux.cn
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%';




4-7        Copyright © 2012,   www.OracleOnLinux . All rights reserved.
                                   OracleOnLinux
                                   OracleOnLinux.cn
Using the MIN and MAX Functions


      You can use MIN and MAX for numeric, character, and
      date data types.
      SELECT MIN(hire_date), MAX(hire_date)
      FROM       employees;




4-8        Copyright © 2012,   www.OracleOnLinux . All rights reserved.
                                   OracleOnLinux
                                   OracleOnLinux.cn
Using the COUNT Function


      COUNT(*) returns the number of rows in a table:
      COUNT(*
      SELECT COUNT(*)
             COUNT(*
1     FROM   employees
      WHERE department_id = 50;



      COUNT(expr) returns the number of rows with non-
      null values for the expr:
      SELECT COUNT(commission_pct),COUNT(salary),COUNT(*)
             COUNT(commission_pct),COUNT(salary),COUNT(
                                  ,COUNT(salary),COUNT(*
2     FROM   employees;
             employees;




4-9        Copyright © 2012,   www.OracleOnLinux . All rights reserved.
                                   OracleOnLinux
                                   OracleOnLinux.cn
Using the DISTINCT Keyword


       •   COUNT(DISTINCT expr) returns the number of
           distinct non-null values of the expr.
       •   To display the number of distinct department
           values in the EMPLOYEES table:
       SELECT COUNT(DISTINCT department_id)
       FROM   employees;




4-10        Copyright © 2012,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Group Functions and Null Values

           Group functions ignore null values in the column :
                                                     column:
           SELECT AVG(commission_pct)
1          FROM   employees;


           The NVL function forces group functions to include
              null values:
           SELECT SUM(commission_pct)/COUNT(*)
                  SUM(commission_pct)/COUNT(*
                     (commission_pct)/COUNT(
2          FROM   employees;

           SELECT SUM(commission_pct)/COUNT(commission_pct)
3          FROM   employees;

           SELECT AVG(NVL(commission_pct, 0))
4          FROM   employees;


    4-11        Copyright © 2012,   www.OracleOnLinux . All rights reserved.
                                        OracleOnLinux
                                        OracleOnLinux.cn
Creating Groups of Data


       EMPLOYEES
                                         4400

                                         9500



                                         3500    Average
                                                 salary in
                                                 EMPLOYEES
                                         6400    table for each
                                                 department
                                         10033




       …

4-12        Copyright © 2012,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Creating Groups of Data:
                      GROUP BY Clause Syntax

       SELECT    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.




4-13        Copyright © 2012,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Using the GROUP BY Clause


       All columns in the SELECT list that are not in group
       functions must be in the GROUP BY clause.

       SELECT       department_id, AVG(salary)
       FROM         employees
       GROUP BY     department_id ;




4-14         Copyright © 2012,   www.OracleOnLinux . All rights reserved.
                                     OracleOnLinux
                                     OracleOnLinux.cn
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 ;




4-15        Copyright © 2012,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Grouping by More Than One Column


       EMPLOYEES




                                         Add the
                                        salaries in
                                      the EMPLOYEES
                                          table for
                                         each job,
                                        grouped by
                                        department
   …



4-16        Copyright © 2012,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Using the GROUP BY Clause
                       on Multiple Columns

       SELECT   department_id dept_id, job_id, SUM(salary)
       FROM     employees
       GROUP BY department_id, job_id ;




4-17        Copyright © 2012,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
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:
                                                     clause:
       SELECT department_id, COUNT(last_name)
       FROM   employees;


       SELECT department_id, COUNT(last_name)
              *
       ERROR at line 1:
       ORA-00937: not a single-group group function

                  Column missing in the GROUP BY clause




4-18        Copyright © 2012,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
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;
       WHERE  AVG(salary) > 8000
              *
       ERROR at line 3:
       ORA-00934: group function is not allowed here
               Cannot use the WHERE clause to restrict groups


4-19        Copyright © 2012,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Restricting Group Results


       EMPLOYEES




                                      The maximum
                                           salary
                                      per department
                                        when it is
                                       greater than
                                          $10,000
       …



4-20        Copyright © 2012,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
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.

       SELECT        column, group_function
       FROM          table
       [WHERE        condition]
       [GROUP BY     group_by_expression]
       [HAVING       group_condition]
       [ORDER BY     column];




4-21        Copyright © 2012,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Using the HAVING Clause


       SELECT      department_id, MAX(salary)
       FROM        employees
       GROUP BY    department_id
       HAVING      MAX(salary)>10000 ;




4-22        Copyright © 2012,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Using the HAVING Clause


       SELECT      job_id, SUM(salary) PAYROLL
       FROM        employees
       WHERE       job_id NOT LIKE '%REP%'
       GROUP BY    job_id
       HAVING      SUM(salary) > 13000
       ORDER BY    SUM(salary);




4-23        Copyright © 2012,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Nesting Group Functions


       Display the maximum average salary:
       SELECT      MAX(AVG(salary))
       FROM        employees
       GROUP BY    department_id;




4-24        Copyright © 2012,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Summary


       In this lesson, you should have learned how to:
        • Use the group functions COUNT, MAX, MIN, and AVG
        • Write queries that use the GROUP BY clause
        • Write queries that use the HAVING clause

       SELECT        column, group_function
       FROM          table
       [WHERE        condition]
       [GROUP BY     group_by_expression]
       [HAVING       group_condition]
       [ORDER BY     column];




4-25        Copyright © 2012,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Practice 4: Overview


       This practice covers the following topics:
        • Writing queries that use the group functions
        • Grouping by rows to achieve more than one result
        • Restricting groups by using the HAVING clause




4-26        Copyright © 2012,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Practice 4

       Q1:The CUSTOMERS table has these columns:
       Q1:The

       CUSTOMER_ID        NUMBER(4)         NOT NULL
       CUSTOMER_NAME       VARCHAR2(100) NOT NULL
       STREET_ADDRESS     VARCHAR2(150)
       CITY_ADDRESS       VARCHAR2(50)
       STATE_ADDRESS       VARCHAR2(50)
       PROVINCE_ADDRESS VARCHAR2(50)
       COUNTRY_ADDRESS VARCHAR2(50)
       POSTAL_CODE        VARCHAR2(12)
       CUSTOMER_PHONE VARCHAR2(20)
        The CUSTOMER_ID column is the primary key for the
       table.

4-27        Copyright © 2012,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Practice 4

       Q1:
       You need to determine how dispersed your customer
       base is. Which expression finds the number of
       different countries represented in the CUSTOMERS
       table?

       A.   COUNT(UPPER(country_address))
       B.   COUNT(DIFF(UPPER(country_address)))
       C.   COUNT(UNIQUE(UPPER(country_address)))
       D.   COUNT DISTINCT UPPER(country_address)
       E.   COUNT(DISTINCT (UPPER(country_address)))

4-28         Copyright © 2012,   www.OracleOnLinux . All rights reserved.
                                     OracleOnLinux
                                     OracleOnLinux.cn
Practice 4

       Q2:
       Which clause should you use to exclude group
       results?

       A.   WHERE
       B.   HAVING
       C.   RESTRICT
       D.   GROUP BY
       E.   ORDER BY




4-29         Copyright © 2012,   www.OracleOnLinux . All rights reserved.
                                     OracleOnLinux
                                     OracleOnLinux.cn
Practice 4

       Q3: Which two are true about aggregate functions?
       (Choose two.)

       A. You can use aggregate functions in any clause of
       a SELECT statement.

       B. You can use aggregate functions only in the
       column list of the SELECT clause and in the WHERE
       clause of a SELECT statement.

       C. You can mix single row columns with aggregate
       functions in the column list of a SELECT statement
       by grouping on the single row columns.


4-30        Copyright © 2012,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Practice 4

       Q3:

       D. You can pass column names, expressions,
       constants, or functions as parameters to an
       aggregate function.

       E. You can use aggregate functions on a table, only
       by grouping the whole table as one single group.

       F. You cannot group the rows of a table by more
       than one column while using aggregate functions.




4-31         Copyright © 2012,   www.OracleOnLinux . All rights reserved.
                                     OracleOnLinux
                                     OracleOnLinux.cn

More Related Content

What's hot (20)

Les08
Les08Les08
Les08
 
Les06
Les06Les06
Les06
 
Les07
Les07Les07
Les07
 
Les09
Les09Les09
Les09
 
plsql Les07
plsql Les07 plsql Les07
plsql Les07
 
Les10
Les10Les10
Les10
 
Les11
Les11Les11
Les11
 
PL/SQL 3 DML
PL/SQL 3 DMLPL/SQL 3 DML
PL/SQL 3 DML
 
Les02
Les02Les02
Les02
 
plsql Les09
 plsql Les09 plsql Les09
plsql Les09
 
Producing Readable Output with iSQL*Plus - Oracle Data Base
Producing Readable Output with iSQL*Plus - Oracle Data BaseProducing Readable Output with iSQL*Plus - Oracle Data Base
Producing Readable Output with iSQL*Plus - Oracle Data Base
 
Les01
Les01Les01
Les01
 
PL/SQL CURSORES
PL/SQL CURSORESPL/SQL CURSORES
PL/SQL CURSORES
 
PL/SQL CONDICIONALES Y CICLOS
PL/SQL CONDICIONALES Y CICLOSPL/SQL CONDICIONALES Y CICLOS
PL/SQL CONDICIONALES Y CICLOS
 
Lesson09
Lesson09Lesson09
Lesson09
 
wee
weewee
wee
 
 
Constructing the IMPL Flowsheet Using Dia with Python (IMPL-FlowsheetDiaPy)
Constructing the IMPL Flowsheet Using Dia with Python (IMPL-FlowsheetDiaPy)Constructing the IMPL Flowsheet Using Dia with Python (IMPL-FlowsheetDiaPy)
Constructing the IMPL Flowsheet Using Dia with Python (IMPL-FlowsheetDiaPy)
 
Lesson03 学会使用单行函数
Lesson03 学会使用单行函数Lesson03 学会使用单行函数
Lesson03 学会使用单行函数
 
plsql les03
 plsql les03 plsql les03
plsql les03
 

Similar to Lesson04 学会使用分组函数

Lesson08
Lesson08Lesson08
Lesson08renguzi
 
Lesson07
Lesson07Lesson07
Lesson07renguzi
 
Aggregating Data Using Group Functions
Aggregating Data Using Group FunctionsAggregating Data Using Group Functions
Aggregating Data Using Group FunctionsSalman Memon
 
Lesson10
Lesson10Lesson10
Lesson10renguzi
 
Oracle SQL - Aggregating Data Les 05.ppt
Oracle SQL - Aggregating Data Les 05.pptOracle SQL - Aggregating Data Les 05.ppt
Oracle SQL - Aggregating Data Les 05.pptDrZeeshanBhatti
 
Subqueries -Oracle DataBase
Subqueries -Oracle DataBaseSubqueries -Oracle DataBase
Subqueries -Oracle DataBaseSalman Memon
 
Consultas con agrupaci¾n de datos
Consultas con agrupaci¾n de datosConsultas con agrupaci¾n de datos
Consultas con agrupaci¾n de datosCaleb Gutiérrez
 
Veri Ambarları için Oracle'ın Analitik SQL Desteği
Veri Ambarları için Oracle'ın Analitik SQL DesteğiVeri Ambarları için Oracle'ın Analitik SQL Desteği
Veri Ambarları için Oracle'ın Analitik SQL DesteğiEmrah METE
 
08 Dynamic SQL and Metadata
08 Dynamic SQL and Metadata08 Dynamic SQL and Metadata
08 Dynamic SQL and Metadatarehaniltifat
 
Creating Views - oracle database
Creating Views - oracle databaseCreating Views - oracle database
Creating Views - oracle databaseSalman Memon
 
Writing Basic SQL SELECT Statements
Writing Basic SQL SELECT StatementsWriting Basic SQL SELECT Statements
Writing Basic SQL SELECT StatementsSalman Memon
 

Similar to Lesson04 学会使用分组函数 (20)

Lesson08
Lesson08Lesson08
Lesson08
 
Lesson07
Lesson07Lesson07
Lesson07
 
Aggregating Data Using Group Functions
Aggregating Data Using Group FunctionsAggregating Data Using Group Functions
Aggregating Data Using Group Functions
 
Oracle examples
Oracle examplesOracle examples
Oracle examples
 
Lesson10
Lesson10Lesson10
Lesson10
 
Oracle SQL - Aggregating Data Les 05.ppt
Oracle SQL - Aggregating Data Les 05.pptOracle SQL - Aggregating Data Les 05.ppt
Oracle SQL - Aggregating Data Les 05.ppt
 
Subqueries -Oracle DataBase
Subqueries -Oracle DataBaseSubqueries -Oracle DataBase
Subqueries -Oracle DataBase
 
Consultas con agrupaci¾n de datos
Consultas con agrupaci¾n de datosConsultas con agrupaci¾n de datos
Consultas con agrupaci¾n de datos
 
plsql les01
 plsql les01 plsql les01
plsql les01
 
Les05
Les05Les05
Les05
 
Les04
Les04Les04
Les04
 
plsql Les08
plsql Les08 plsql Les08
plsql Les08
 
Veri Ambarları için Oracle'ın Analitik SQL Desteği
Veri Ambarları için Oracle'ın Analitik SQL DesteğiVeri Ambarları için Oracle'ın Analitik SQL Desteği
Veri Ambarları için Oracle'ın Analitik SQL Desteği
 
Les11.ppt
Les11.pptLes11.ppt
Les11.ppt
 
08 Dynamic SQL and Metadata
08 Dynamic SQL and Metadata08 Dynamic SQL and Metadata
08 Dynamic SQL and Metadata
 
plsql les02
 plsql les02 plsql les02
plsql les02
 
Creating Views - oracle database
Creating Views - oracle databaseCreating Views - oracle database
Creating Views - oracle database
 
Sql views
Sql viewsSql views
Sql views
 
Writing Basic SQL SELECT Statements
Writing Basic SQL SELECT StatementsWriting Basic SQL SELECT Statements
Writing Basic SQL SELECT Statements
 
MySQL Quick Dive
MySQL Quick DiveMySQL Quick Dive
MySQL Quick Dive
 

Recently uploaded

"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
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: 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
 
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
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
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
 
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
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
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
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
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
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
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
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 

Recently uploaded (20)

"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
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: 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
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
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
 
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
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
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
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
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?
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
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
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 

Lesson04 学会使用分组函数

  • 1. Oracle OCP 考试系列培训 之 1Z0-007 Lesson4 www.OracleOnLinux.cn 4-1 Copyright © 2012, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 2. 4 Reporting Aggregated Data Using the Group Functions 4-2 Copyright © 2012, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 3. 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 by using the GROUP BY clause • Include or exclude grouped rows by using the HAVING clause 4-3 Copyright © 2012, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 4. What Are Group Functions? Group functions operate on sets of rows to give one result per group. EMPLOYEES Maximum salary in EMPLOYEES table … 4-4 Copyright © 2012, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 5. Types of Group Functions • AVG • COUNT • MAX Group • MIN functions • STDDEV • SUM • VARIANCE 4-5 Copyright © 2012, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 6. Group Functions: Syntax SELECT [column,] group_function(column), ... FROM table [WHERE condition] [GROUP BY column] [ORDER BY column]; 4-6 Copyright © 2012, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 7. 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%'; 4-7 Copyright © 2012, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 8. Using the MIN and MAX Functions You can use MIN and MAX for numeric, character, and date data types. SELECT MIN(hire_date), MAX(hire_date) FROM employees; 4-8 Copyright © 2012, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 9. Using the COUNT Function COUNT(*) returns the number of rows in a table: COUNT(* SELECT COUNT(*) COUNT(* 1 FROM employees WHERE department_id = 50; COUNT(expr) returns the number of rows with non- null values for the expr: SELECT COUNT(commission_pct),COUNT(salary),COUNT(*) COUNT(commission_pct),COUNT(salary),COUNT( ,COUNT(salary),COUNT(* 2 FROM employees; employees; 4-9 Copyright © 2012, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 10. Using the DISTINCT Keyword • COUNT(DISTINCT expr) returns the number of distinct non-null values of the expr. • To display the number of distinct department values in the EMPLOYEES table: SELECT COUNT(DISTINCT department_id) FROM employees; 4-10 Copyright © 2012, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 11. Group Functions and Null Values Group functions ignore null values in the column : column: SELECT AVG(commission_pct) 1 FROM employees; The NVL function forces group functions to include null values: SELECT SUM(commission_pct)/COUNT(*) SUM(commission_pct)/COUNT(* (commission_pct)/COUNT( 2 FROM employees; SELECT SUM(commission_pct)/COUNT(commission_pct) 3 FROM employees; SELECT AVG(NVL(commission_pct, 0)) 4 FROM employees; 4-11 Copyright © 2012, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 12. Creating Groups of Data EMPLOYEES 4400 9500 3500 Average salary in EMPLOYEES 6400 table for each department 10033 … 4-12 Copyright © 2012, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 13. Creating Groups of Data: GROUP BY Clause Syntax SELECT 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. 4-13 Copyright © 2012, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 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. SELECT department_id, AVG(salary) FROM employees GROUP BY department_id ; 4-14 Copyright © 2012, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 15. 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 ; 4-15 Copyright © 2012, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 16. Grouping by More Than One Column EMPLOYEES Add the salaries in the EMPLOYEES table for each job, grouped by department … 4-16 Copyright © 2012, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 17. Using the GROUP BY Clause on Multiple Columns SELECT department_id dept_id, job_id, SUM(salary) FROM employees GROUP BY department_id, job_id ; 4-17 Copyright © 2012, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 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: clause: SELECT department_id, COUNT(last_name) FROM employees; SELECT department_id, COUNT(last_name) * ERROR at line 1: ORA-00937: not a single-group group function Column missing in the GROUP BY clause 4-18 Copyright © 2012, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 19. 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; WHERE AVG(salary) > 8000 * ERROR at line 3: ORA-00934: group function is not allowed here Cannot use the WHERE clause to restrict groups 4-19 Copyright © 2012, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 20. Restricting Group Results EMPLOYEES The maximum salary per department when it is greater than $10,000 … 4-20 Copyright © 2012, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 21. 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. SELECT column, group_function FROM table [WHERE condition] [GROUP BY group_by_expression] [HAVING group_condition] [ORDER BY column]; 4-21 Copyright © 2012, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 22. Using the HAVING Clause SELECT department_id, MAX(salary) FROM employees GROUP BY department_id HAVING MAX(salary)>10000 ; 4-22 Copyright © 2012, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 23. Using the HAVING Clause SELECT job_id, SUM(salary) PAYROLL FROM employees WHERE job_id NOT LIKE '%REP%' GROUP BY job_id HAVING SUM(salary) > 13000 ORDER BY SUM(salary); 4-23 Copyright © 2012, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 24. Nesting Group Functions Display the maximum average salary: SELECT MAX(AVG(salary)) FROM employees GROUP BY department_id; 4-24 Copyright © 2012, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 25. Summary In this lesson, you should have learned how to: • Use the group functions COUNT, MAX, MIN, and AVG • Write queries that use the GROUP BY clause • Write queries that use the HAVING clause SELECT column, group_function FROM table [WHERE condition] [GROUP BY group_by_expression] [HAVING group_condition] [ORDER BY column]; 4-25 Copyright © 2012, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 26. Practice 4: Overview This practice covers the following topics: • Writing queries that use the group functions • Grouping by rows to achieve more than one result • Restricting groups by using the HAVING clause 4-26 Copyright © 2012, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 27. Practice 4 Q1:The CUSTOMERS table has these columns: Q1:The CUSTOMER_ID NUMBER(4) NOT NULL CUSTOMER_NAME VARCHAR2(100) NOT NULL STREET_ADDRESS VARCHAR2(150) CITY_ADDRESS VARCHAR2(50) STATE_ADDRESS VARCHAR2(50) PROVINCE_ADDRESS VARCHAR2(50) COUNTRY_ADDRESS VARCHAR2(50) POSTAL_CODE VARCHAR2(12) CUSTOMER_PHONE VARCHAR2(20) The CUSTOMER_ID column is the primary key for the table. 4-27 Copyright © 2012, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 28. Practice 4 Q1: You need to determine how dispersed your customer base is. Which expression finds the number of different countries represented in the CUSTOMERS table? A. COUNT(UPPER(country_address)) B. COUNT(DIFF(UPPER(country_address))) C. COUNT(UNIQUE(UPPER(country_address))) D. COUNT DISTINCT UPPER(country_address) E. COUNT(DISTINCT (UPPER(country_address))) 4-28 Copyright © 2012, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 29. Practice 4 Q2: Which clause should you use to exclude group results? A. WHERE B. HAVING C. RESTRICT D. GROUP BY E. ORDER BY 4-29 Copyright © 2012, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 30. Practice 4 Q3: Which two are true about aggregate functions? (Choose two.) A. You can use aggregate functions in any clause of a SELECT statement. B. You can use aggregate functions only in the column list of the SELECT clause and in the WHERE clause of a SELECT statement. C. You can mix single row columns with aggregate functions in the column list of a SELECT statement by grouping on the single row columns. 4-30 Copyright © 2012, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 31. Practice 4 Q3: D. You can pass column names, expressions, constants, or functions as parameters to an aggregate function. E. You can use aggregate functions on a table, only by grouping the whole table as one single group. F. You cannot group the rows of a table by more than one column while using aggregate functions. 4-31 Copyright © 2012, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn