oraclemax()函数和min()函数
当需要了解⼀列中的最⼤值时,可以使⽤MAX()函数;同样,当需要了解⼀列中的最⼩值时,可以使⽤MIN()函数。语法如下。
SELECT          MAX (column_name) / MIN (column_name)
FROM            table_name
说明:列column_name中的数据可以是数值、字符串或是⽇期时间数据类型。MAX()/MIN()函数将返回与被传递的列同⼀数据类型的单⼀值。
实例7 MAX()函数的使⽤
查询TEACHER表中教师的最⼤年龄。实例代码:
SELECT MAX (AGE) AS MAXAGE
FROM    TEACHER
运⾏结果如图1⽰。
图1TEACHER表中教师的最⼤年龄
然⽽,在实际应⽤中得到这个结果并不是特别有⽤,因为经常想要获得的信息是具有最⼤年龄的教师的教⼯号、姓名、性别等信息。
然⽽SQL不⽀持如下的SELECT语句。
SELECT TNAME, DNAME, TSEX, MAX (AGE)
字符串函数注册登录FROM    TEACHER
因为聚合函数处理的是数据组,在本例中,MAX函数将整个TEACHER表看成⼀组,⽽TNAME、DNAME和TSEX的数据都没有进⾏任何分组,因此SELECT语句没有逻辑意义。同样的道理,下⾯的代码也是⽆效的。
SELECT TNAME, DNAME, TSEX,SAL ,AGE
FROM    TEACHER
WHERE  AGE=MAX (AGE)
解决这个问题的⽅法,就是在WHERE⼦句中使⽤⼦查询来返回最⼤值,然后再基于这个返回的最⼤值,查询相关信息。
实例8 在WHERE⼦句中使⽤⼦查询返回最⼤值
查询TEACHER表中年纪最⼤的教师的教⼯号、姓名、性别等信息。
实例代码:
SELECT TNAME, DNAME, TSEX, SAL, AGE
FROM    TEACHER
WHERE  AGE=(SELECT MAX (AGE) FROM    TEACHER)
运⾏结果如图2⽰。
图2在WHERE⼦句中使⽤⼦查询返回最⼤值
MAX()和MIN()函数不仅可以作⽤于数值型数据,也可以作⽤于字符串或是⽇期时间数据类型的数据。
实例MAX()函数⽤于字符型数据
如下⾯代码:
SELECT MAX (TNAME) AS MAXNAME
FROM    TEACHER
运⾏结果如图3⽰。
图3在字符串数据类型中使⽤MAX的结果
可见,对于字符串也可以求其最⼤值。
说明
对字符型数据的最⼤值,是按照⾸字母由A~Z的顺序排列,越往后,其值越⼤。当然,对于汉字则是按照其全拼拼⾳排列的,若⾸字符相同,则⽐较下⼀个字符,以此类推。
当然,对与⽇期时间类型的数据也可以求其最⼤/最⼩值,其⼤⼩排列就是⽇期时间的早晚,越早认为其值越⼩,如下⾯的实例。
实例 MAX()、MIN()函数⽤于时间型数据
从COURSE表中查询最早和最晚考试课程的考试时间。其中COURSE表的结构和数据可参见本书6.1节的表6-1。实例代码:
SELECT MIN (CTEST) AS EARLY_DATE,
MAX (CTEST) AS LATE_DATE
FROM    COURSE
运⾏结果如图4⽰。
图4COURSE表中最早和最晚考试课程的考试时间
可见,返回结果的数据类型与该列定义的数据类型相同。
注意
确定列中的最⼤值(最⼩值)时,MAX( )(MIN( ))函数忽略NULL值。但是,如果在该列中,所有⾏的值都是NULL,则MAX( )/MIN( )函数将返回NULL值。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。