美文网首页
Oracle学习day-29:组函数、子查询

Oracle学习day-29:组函数、子查询

作者: 开源oo柒 | 来源:发表于2019-08-20 21:45 被阅读0次

    一、组函数

    1.什么是组函数?

    组函数操作行集,给出每组的结果。组函数不象单行函数,组函数对行的集合进行操作, 对每组给出一个结果。这些集合可能是整个表或者是表分成的组。

    2.组函数与单行函数的区别:

    1)单行函数对查询到每个结果集做处理,而组函数只对分组数据做处理。 

    3)单行函数对每个结果集返回一个结果,而组函数对每个分组返回一个结果。

    3.组函数的类型:

    1)AVG(arg)函数:对分组数据做平均值运算。

    2)SUM(arg)函数:对分组数据求和。

    3)COUNT 函数:返回一个表中的行数

    4)MIN(arg)函数:求分组中最小数据。

    5)MAX(arg)函数:求分组中最大数据。

    (1)组函数参数的数据类型:

    1)用于函数的参数的数据类型可以是 CHAR、VARCHAR2、NUMBER 或 DATE。

    2)所有组函数忽略空值。为了用一个值代替空值,用 NVL、NVL2 或 COALESCE 函

    数。

    注意:AVG 和 SUM 函数的参数类型只能是数字类型; MIN 和 MAX 函数的参数类型可以是字符、数字、日期。

    (3)使用 AVG 和 SUM 函数:

    select avg(列名) ,sum(列名) from 表名;

    (4)使用 MIN 和 MAX 函数:

    select min(列名),max(列名) from 表名;

    (5)使用 COUNT 函数:返回一个表中的行数。

    COUNT 函数有三种格式:

    1)COUNT(*) :返回表中满足 SELECT 语句标准的行数,包括重复行,包括有空值列的行。

    2)COUNT(expr) :返回在列中的由 expr 指定的非空值的数。

    3)COUNT(DISTINCTexpr):使用 DISTINCT 关键字禁止计算在一列中的重复值。

    4.创建数据组

    (1)什么是数据组?

    可以根据需要将查询到的结果集信息划分为较小的组,用 GROUPBY 子句实现。

    (2)GROUPBY 子句语法:

    GROUPBY 子句:GROUPBY 子句可以把表中的行划分为组。然后可以用组函数返回 每一组的摘要信息。

    (3)GROUPBY 子句的执行顺序:

    先进行数据查询,在对数据进行分组,然后执行组函数。

    注意:

    1)在 SELECT 列表中的任何列必须在 GROUPBY 子句中。

    2)在 GROUPBY 子句中的列或表达式不必在 SELECT 列表中。

    5.约束分组结果

    (1)什么是HAVING子句?

    HAVING 语句通常与 GROUPBY 语句联合使用,用来过滤由 GROUPBY 语句返回的记 录集。 HAVING 语句的存在弥补了 WHERE 关键字不能与聚合函数联合使用的不足。

    (2)HAVING 子句语法:

    (3)嵌套组函数

    在使用组函数时我们也可以根据需要来做组函数的嵌套使用。
    select max(avg(列名)) from 表名 group by 列名;

    二、子查询

    1.什么是子查询?

    子查询是一个 SELECT 语句,它是嵌在另一个 SELECT 语句中的子句。

    2.子查询语法:

    1) 子查询在主查询之前执行一次 ;

    2)子查询的结果被用于主查询 ;

    3)可以将子查询放在:WHERE 子句 、HAVING 子句 和FROM 子句中。

    3.使用子查询:

    可以用组合两个查询的方法解决这个问题,放置一个查询到另一个查询中。内查询或子 查询返回一个值给外查询或主查询。使用一个子查询相当于执行两个连续查询并且用第一个 查询的结果作为第二个查询的搜索值。

    (1)子查询的原则:

    1)子查询放在圆括号中。

    2)将子查询放在比较条件的右边。

    3)在单行子查询中用单行运算符,在多行子查询中用多行运算符。

    4.单行子查询:

    子查询语句只返回一行的查询,使用单行比较符。

    (1)主查询对子查询结果的单行比较运算符:

    (2)在子查询中可以使用组函数,可以在 WHERE 子句中使用子查询,也可以在 HAVING 子句中使用子查询。

    注意:子查询错误,使用子查询的一个常见的错误是单行子查询返回了多行。

    5.多行子查询:

    子查询语句返回多行的查询,使用多行比较符。

    (1)主查询对子查询的多行比较运算符(在条件中也可使用 NOT 取反):

    (2)在多行子查询中使用 IN 运算符:

    (3)在多行子查询中使用 ANY 运算符(<ANY 意思是小于最大值。 >ANY 意思是大于最小值):

    (4)在多行子查询中使用 ALL 运算符(<ALL 意思是小于最小值。>ALL 意思是大于最大值):

    相关文章

      网友评论

          本文标题:Oracle学习day-29:组函数、子查询

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