美文网首页
第八章 SQL聚合函数 MAX

第八章 SQL聚合函数 MAX

作者: Cache技术分享 | 来源:发表于2021-12-29 09:52 被阅读0次

    第八章 SQL聚合函数 MAX

    返回指定列中最大数据值的聚合函数。

    大纲

    MAX([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])
    

    参数

    • ALL - 可选-将聚合函数应用于所有值。
      ALLMAX返回的值没有影响。
      它提供了SQL-92兼容性。
    • DISTINCT - 可选-一个DISTINCT子句,指定考虑每个惟一值。
      DISTINCTMAX返回的值没有影响。
      它提供了SQL-92兼容性。
    • expression - 任何有效的表达式。
      通常是包含要返回的最大值的值的列的名称。
    • %FOREACH(col-list) - 可选-列名或以逗号分隔的列名列表。
    • %AFTERHAVING - 可选-应用在HAVING子句中的条件。

    MAX返回与表达式相同的数据类型。

    描述

    MAX聚合函数返回表达式的最大值。
    通常,表达式是查询返回的多行中字段的名称(或包含一个或多个字段名称的表达式)。

    MAX可以在引用表或视图的SELECT查询或子查询中使用。
    MAX可以在SELECT列表或HAVING子句中与普通字段值一起出现。

    MAX不能在WHERE子句中使用。
    MAX不能在JOINON子句中使用,除非SELECT是子查询。

    与大多数其他聚合函数一样,MAX不能应用于流字段。
    尝试这样做会产生一个SQLCODE -37错误。

    与大多数其他聚合函数不同,ALLDISTINCT关键字,包括MAX(DISTINCT BY(col2) col1),在MAX中不执行任何操作。
    它们是为了SQL-92的兼容性而提供的。

    数据值

    MAX使用的指定字段可以是数字或非数字。
    对于数字数据类型字段,maximum被定义为数值中的最大值;
    因此-3大于-7
    对于非数值型数据类型字段,maximum定义为字符串排序序列中的最大值;
    因此'-7''-3'高。

    一个空字符串 ('')值被视为CHAR(0)

    谓词使用为字段定义的排序规则类型。
    默认情况下,字符串数据类型字段是用SQLUPPER排序规则定义的,它不区分大小写。

    当字段定义的排序类型为SQLUPPER时,MAX返回全大写字母的字符串。
    因此,SELECT MAX(Name)返回'ZWIG',而不管数据的原始字母大小写。
    但是因为比较是使用大写排序法执行的,所以HAVING Name=MAX(Name)子句选择的是Name值为 'Zwig', 'ZWIG', 'zwig'的行。

    对于数值,返回的刻度与表达式刻度相同。

    在派生MAX聚合函数值时,数据字段中的NULL值将被忽略。
    如果查询没有返回行,或者返回的所有行的数据字段值为NULL,则MAX返回NULL

    当前事务期间所做的更改

    与所有聚合函数一样,MAX总是返回数据的当前状态,包括未提交的更改,而不考虑当前事务的隔离级别。

    示例

    以下查询返回Sample.Employee数据库中的最高(最高)工资:

    SELECT '$' || MAX(Salary) As TopSalary
         FROM Sample.Employee
    
    image.png

    下面的查询为每个州返回一行,每个州至少包含一名薪水小于25,000美元的员工。使用%AFTERHAVING关键字,每行返回小于25,000美元的最高员工工资。每行还返回该状态下所有员工的最低工资和最高工资:

    SELECT Home_State,
           '$' || MAX(Salary %AFTERHAVING) AS MaxSalaryBelow25K,
           '$' || MIN(Salary) AS MinSalary,
           '$' || MAX(Salary) AS MaxSalary
              FROM Sample.Employee
         GROUP BY Home_State
         HAVING Salary < 25000
         ORDER BY Home_State
    
    image.png

    以下查询返回在Sample.Employee数据库中找到的排序规则序列中最小(最小)和最高(最大)的名称:

    SELECT Name,MIN(Name),MAX(Name)
         FROM Sample.Employee
    

    请注意,在比较之前,MINMAX会将NAME值转换为大写。

    以下查询返回Sample.Employee数据库中Home_State‘VT’的员工的最高(最高)工资:

    SELECT MAX(Salary)
         FROM Sample.Employee
         WHERE Home_State = 'VT'
    
    image.png

    以下查询返回Sample.Employee数据库中每个Home_State的员工数量和最高(最高)员工工资:

    SELECT Home_State, 
         COUNT(Home_State) As NumEmployees, 
         MAX(Salary) As TopSalary
         FROM Sample.Employee
         GROUP BY Home_State
         ORDER BY TopSalary
    
    image.png

    相关文章

      网友评论

          本文标题:第八章 SQL聚合函数 MAX

          本文链接:https://www.haomeiwen.com/subject/cikvqrtx.html