美文网首页
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:组函数、子查询

    一、组函数 1.什么是组函数? 组函数操作行集,给出每组的结果。组函数不象单行函数,组函数对行的集合进行操作, 对...

  • 2018-08-30

    今天学习了Oracle的多表连接,组函数,分组查询,子查询,常用函数。 多表连接有三种类型:内连接,外连接,自连接...

  • Mysql查询带树状结构的信息

    Mysql查询带树状结构的信息 在Oracle中有函数应用直接能够查询出树状的树状结构信息,例如有下面树状结构的组...

  • MySql语句转Oracle的坑啊

    1.模糊查询 Mysql Oracle Oracle里面也有concat函数,如果要使用CONCAT函数的话,我们...

  • oracle语句

    with…as… 不同于MySQL,Oracle不能直接使用as来为子查询获得的表命名,在Oracle中要为子查询...

  • 一句话从 Oracle 取每组前三名

    Oracle 实现这个用到了窗口函数,以及子查询,写出来也不容易,如下 SELECT * FROM ( SELEC...

  • SQL查询_高级查询

    SQL查询_高级查询 一、子查询 子查询出现的位置一般为条件语句,oracle会先执行子查询,再执行父查询,子查询...

  • ORACLE性能优化之SQL语句优化

    #1 使用EXISTS代替IN Oracle通过使用EXISTS,Oracle会首先检查主查询,然后运行子查询直到...

  • Oracle子查询

    初识钟情,终于白首;眉眼如初,岁月如故 子查询 简单理解,在查询语句中,还有一个查询语句。子查询会在主查询之前先执...

  • oracle高级查询

    幕课oracle学习笔记 --!!!scott用户 --一.分组查询 --1.常用的分组函数:AVG(平均数),S...

网友评论

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

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