zoukankan      html  css  js  c++  java
  • Chapter 05Reporting Aggregated data Using the Group Functions 01

    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

    Lesson Agenda

    • Groups functions:
      • -Types and syntax
      • -Use AVG,SUM,MIN,MAX,COUNT
      • -Use DISTINCT keyword within group of functions
      • -NULL values in a group function
    • Grouping rows:
      • -GROUP BY clause
      • -HAVING clause
    • Nesting group functions 

    What are group functions?

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

    Types of Group Functions

    • AVG
    • COUNT
    • MAX
    • MIN
    • STDDEV(计算标准偏差)
    • SUM
    • VARIANCE(计算方差)

    Group Functions:Syntax

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

    注意要点:

      (1)、组函数不包含NULL值,如果遇到NULL值,会主动放弃掉NULL值部分;如果想将NULL值作为计算元素在内,可以使用NVL函数,进行转换一下.

      (2)、如果组函数操作的column中,存在重复行,可以使用keyword DISTICT,过滤掉重复行;缺省情况下Group Function是按照ALL来进行计算的.

    Using the AVG and SUM Functions

    You can use AVG and SUM for numeric data

    View Code
    SQL> SELECT AVG(salary),MAX(salary),MIN(SALARY),SUM(SALARY) FROM employees WHERE job_id LIKE '%REP%';
    
    AVG(SALARY) MAX(SALARY) MIN(SALARY) SUM(SALARY)
    ----------- ----------- ----------- -----------
     8272.72727       11500        6000      273000

    Using the MIN and MAX Functions

    You can use MIN and MAX for numeric,character,and date data types.

    View Code
    SQL> SELECT MIN(hire_date),MAX(hire_date) FROM employees;
    
    MIN(HIRE_ MAX(HIRE_
    --------- ---------
    13-JAN-01 21-APR-08
    View Code
    SQL> SELECT MIN(last_name),MAX(last_name) FROM employees;
    
    MIN(LAST_NAME)            MAX(LAST_NAME)
    ------------------------- -------------------------
    Abel                      Zlotkey
    View Code
    SQL> SELECT MIN(salary),MAX(salary) FROM employees;
    
    MIN(SALARY) MAX(SALARY)
    ----------- -----------
           2100       24000

    Using the COUNT Function

    • COUNT(*) return the number of rows in a table:
    View Code
    SQL> SELECT COUNT(*) FROM employees;
    
      COUNT(*)
    ----------
           107
    • COUNT(expr) returns the number of rows with non-null values for expr:
    View Code
    SQL> SELECT count(commission_pct) FROM employees  WHERE department_id = 80;
    
    COUNT(COMMISSION_PCT)
    ---------------------
                       34
    View Code
    SQL> SELECT COUNT(commission_pct) FROM employees;
    
    COUNT(COMMISSION_PCT)
    ---------------------
                       35
    SQL> SELECT COUNT(NVL(commission_pct,0)) FROM employees;
    
    COUNT(NVL(COMMISSION_PCT,0))
    ----------------------------
                             107

    Using the DISTINCT Keyword

    • COUNT(DISTINCT expr) returns the number of distict non-null values of expr.
    • TO display the number of distinct department values in ther EMPLOYEES table:
    View Code
    SQL> SELECT COUNT(department_id) FROM employees;
    
    COUNT(DEPARTMENT_ID)
    --------------------
                     106
    
    SQL> SELECT COUNT(DISTINCT department_id) FROM employees;
    
    COUNT(DISTINCTDEPARTMENT_ID)
    ----------------------------
                              11
    
    SQL> SELECT COUNT(ALL department_id) FROM employees;
    
    COUNT(ALLDEPARTMENT_ID)
    -----------------------
                        106
    
    SQL> SELECT COUNT(NVL(department_id,0)) FROM employees;
    
    COUNT(NVL(DEPARTMENT_ID,0))
    ---------------------------
                            107

    Group Functions and Null Values

    • Group functions ignore null values in the column:
    View Code
    SQL> SELECT AVG(commission_pct) FROM employees;
    
    AVG(COMMISSION_PCT)
    -------------------
             .222857143
    • The NVL function forces group functions to include null values:
    View Code
    SQL> SELECT AVG(NVL(commission_pct,0)) FROM employees;
    
    AVG(NVL(COMMISSION_PCT,0))
    --------------------------
                    .072897196

    Creating Groups of Data

    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]
    注意:
    (1)、group_function(column)与group_by_expression是有关联的.怎么个关联法?
    (2)、column一定要包含在group by clause
    (3)、如果where clause和group by clause同时存在的话,oracle server一定是先执行where clause.
    (4)、在where clause和group by clause中是不能使用alias的.

    You can 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

    View Code
    SQL> SELECT NVL(department_id,999) deptid,ROUND(AVG(salary),2) AvgSalary FROM employees GROUP BY department_id ORDER BY department_id;
    
        DEPTID  AVGSALARY
    ---------- ----------
            10       4400
            20       9500
            30       4150
            40       6500
            50    3475.56
            60       5760
            70      10000
            80    8955.88
            90   19333.33
           100    8601.33
           110      10154
    
        DEPTID  AVGSALARY
    ---------- ----------
           999       7000
    
    12 rows selected.
  • 相关阅读:
    「联赛模拟测试33」题解
    分享几个基于vue的移动端框架
    11-15
    test
    联赛模拟测试20 C. Weed
    联赛模拟测试20 D. Drink
    联赛模拟测试24 联合权值·改
    联赛模拟测试21 表格
    近期的一些考试题目
    shell脚本执行错误 $' ':command not found
  • 原文地址:https://www.cnblogs.com/arcer/p/3021583.html
Copyright © 2011-2022 走看看