根据父类id查询所有的父级_031、组函数和子查询

1.组函数(聚合函数)

(1)组函数介绍

组函数操作行集,给出每组的结果。组函数不象单行函数,组函数对行的集合进行操作,

对每组给出一个结果。这些集合可能是整个表或者是表分成的组。

组函数与单行函数区别

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

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

组函数的类型

• AVG 平均值

• COUNT 计数

• MAX 最大值

• MIN 最小值

• SUM 合计

组函数的语法

987181e85b4debb0dca4906388f7303a.png

使用组函数的原则

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

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

(2)组函数的使用 AVG 和 SUM 函数

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

arg:参数类型只能是数字类型。

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

arg:参数类型只能是数字类型。

示例:求雇员表中的的平均薪水与薪水总额。

select avg(salary) ,sum(salary) from employees;

使用 MIN 和 MAX 函数

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

arg:参数类型可以是字符、数字、日期。

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

arg:参数类型可以是字符、数字、日期。

示例 :求雇员表中的最高薪水与最低薪水。

select min(salary),max(salary) from employees;

使用 COUNT 函数

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

COUNT 函数有三种格式:

• COUNT(*)

• COUNT(expr)

• COUNT(DISTINCT expr)

COUNT(*) :

返回表中满足 SELECT 语句标准的行数,包括重复行,包括有空值列的行。如果WHERE 子句包括在 SELECT 语句中,COUNT(*) 返回满足 WHERE 子句条件的行数。

示例:返回查询结果的总条数。

select count(*) from employees;

COUNT(expr)函数 :

返回在列中的由 expr 指定的非空值的数。

示例:显示部门 80 中有佣金的雇员人数。

select count(commission_pct) from employees e where e.department_id = 80;

COUNT(DISTINCT expr):

使用 DISTINCT 关键字禁止计算在一列中的重复值。

示例:显示 EMPLOYEES 表中不重复的部门数。

select count(distinct department_id) from employees ;

组函数和 Null 值

所有组函数忽略列中的空值。

在组函数中使用 NVL 函数来处理空值。

示例:计算有佣金的员工的佣金平均值。

select avg(commission_pct) from employees;

2.创建数据组(GROUP BY)

什么是创建数据组

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

GROUP BY 子句语法

1ab2144d57093b3af7497a0c71aa0357.png

GROUP BY 子句:GROUP BY 子句可以把表中的行划分为组。然后可以用组函数返回

每一组的摘要信息。

使用分组原则

• 如果在 SELECT 子句中包含了组函数,就不能选择单独的结果,除非单独的列出现在 GROUP BY 子句中。如果未能在 GROUP BY 子句中包含一个字段列表,你会收到一个错误信息。

• 使用 WHERE 子句,你可以在划分行成组以前过滤行。

• 在 GROUP BY 子句中必须包含列。

• 在 GROUP BY 子句中你不能用列别名。

• 默认情况下,行以包含在 GROUP BY 列表中的字段的升序排序。可以用 ORDER BY子句覆盖这个默认值。

GROUP BY 子句的使用

我们可以根据自己的需要对数据进行分组,在分组时,只要将需要做分组的列的列名添

加到 GROUP BY 子句后侧就可以。GROUP BY 列不必在 SELECT 列表中。

68cd3aab117e322e1b65b45b1fc299b9.png

示例:求每个部门的平均薪水。

select department_id , avg(salary) from employees e group by e.department_id;

GROUP BY 子句的执行顺序

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

非法使用 Group 函数的查询

• 在 SELECT 列表中的任何列必须在 GROUP BY 子句中。

• 在 GROUP BY 子句中的列或表达式不必在 SELECT 列表中。

7770abfcbc1fcfa33bcb48ddd1e3b2f5.png

约束分组结果

HAVING 子句 的概念

HAVING 语句通常与 GROUP BY 语句联合使用,用来过滤由 GROUP BY 语句返回的记录集。

HAVING 语句的存在弥补了 WHERE 关键字不能与聚合函数联合使用的不足。

HAVING 子句语法

6592e862141b70d0877cc2c530cb1f24.png

示例:显示那些最高薪水大于 $10,000 的部门的部门号和最高薪水。

select e.department_id,max(e.salary) from employees e group by e.department_id having max(e.salary) > 10000;

查询那些最高薪水大于 $10,000 的部门的部门号和平均薪水。

select e.department_id,avg(e.salary) from employees e group by e.department_id having max(e.salary) > 10000;

嵌套组函数

在使用组函数时我们也可以根据需要来做组函数的嵌套使用。

示例 :显示部门中的最大平均薪水。

select max(avg(e.salary)) from employees e group by e.department_id;

3.子查询

子查询介绍

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

子查询语法

f448d2f5a5fa895f8422cd30b4abda77.png

• 子查询 (内查询) 在主查询之前执行一次

• 子查询的结果被用于主查询 (外查询)

可以将子查询放在许多的 SQL 子句中,包括:

• WHERE 子句

• HAVING 子句

• FROM 子句

使用子查询的原则

• 子查询放在圆括号中。

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

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

示例:谁的薪水比 Abel 高。

用内连接实现:

select em.last_name,em.salary from employees abel,employees em where abel.last_name = 'Abel' and em.salary > abel.salary;

用子查询实现:

select em.last_name,em.salary from employees em where em.salary >(select m.salary from employees m where m.last_name = 'Abel');

子查询的类型

64b00a1fee69f577045c3cbb91ece2a4.png

• 单行子查询:子查询语句只返回一行的查询

• 多行子查询:子查询语句返回多行的查询

单行子查询

• 仅返回一行

• 使用单行比较符

5aa652d3898fed28cf09e82bb532379e.png

示例:显示那些 job ID 与雇员 141 相同的雇员的名字与 job ID。

select em.last_name,em.job_id from employees em where em.job_id = (select job_id from employees e where e.employee_id = 141);

示例:显示 job ID 与雇员 141 相同,并且薪水 高于雇员 143 的那些雇员。

select e.last_name,e.job_id,e.salary from employees e where e.job_id = (select em.job_id from employees em where em.employee_id = 141) and e.salary > (select emp.salary from employees emp where emp.employee_id = 143);

在子查询中使用组函数

示例 :显示所有其薪水等于最低薪水的雇员的 last name、job ID 和 salary。

select em.last_name,em.job_id,em.salary from employees em where em.salary =(select min(salary) from employees);

带子查询的 HAVING 子句

可以在 WHERE 子句中使用子查询,也可以在 HAVING 子句中使用子查询。

示例 :显示所有其最低薪水小于 部门 50 的最低薪水的部门号和最低薪水。

select em.department_id,min(em.salary) from employees em group by em.department_id having min(em.salary) > (select min(e.salary) from employees e where e.department_id = 50);

什么是子查询错误?

ce94c2a35f39fef59c163b6a5eb07102.png

18fc3535484d97a582db6c97ae7c3aae.png

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

多行子查询

• 返回多于一行

• 使用多行比较符

主查询对子查询的多行比较运算符

9f432de4d32db06e198eabb56035733e.png

在条件中也可使用 NOT 取反。

4.在多行子查询中使用 IN 运算符

示例 :查找各部门收入为部门最低的那些雇员。显示他们的名字,薪水以及部门 ID。

select e.last_name,e.department_id,e.salary from employees e where e.salary in(select min(em.salary) from employees em group by em.department_id);

5.在多行子查询中使用 ANY 运算符

40180678ec268b65ab5f0e122a783052.png

< ANY 意思是小于最大值。 >ANY 意思是大于最小值。

示例

显示工作岗位不是 IT_PROG 的雇员,并且这些雇员的的薪水少于 IT_PROG 工作岗位的雇员的 ID、名字、工作岗位和薪水。

select e.employee_id,e.last_name,e.job_id,e.salary from employees e where e.job_id <> 'IT_PROG' and e.salary < any (select em.salary from employees em where em.job_id = 'IT_PROG') ;

6.在多行子查询中使用 ALL 运算符

669c5e7552c7473bb3d77f3585bdfee8.png

<ALL 意思是小于最小值。>ALL 意思是大于最大值。

ANY 与 ALL 的区别:

ANY: >ANY 表示至少大于一个值,即大于最小值。

ALL: >ALL 表示大于每一个值,既大于最大值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/500748.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工业设计对计算机技术的应用,计算机在产品设计的应用

摘要&#xff1a;通过在产品设计中引入计算机技术&#xff0c;不仅能够大大提升产品功效&#xff0c;而且其开发周期也得以大幅缩减。在产品设计的各环节&#xff0c;包括调查、分析、定位等由于有了计算机技术的应用而更加便捷&#xff0c;而且计算机技术也在产品设计的草图、…

checksum命令 linux_linux命令详解:md5sum命令

作为一个运维工作者&#xff0c;日常肯定会频繁的更新&#xff0c;怎样区分每次的更新 更清楚的区别两次更新的文件的不同呢 推荐一个比较实用的方法&#xff0c;即获取每次更新文件的md5值。前言在网络传输、设备之间转存、复制大文件等时&#xff0c;可能会出现传输前后数据不…

未来计算机是什么结合的产物,计算机未来发展趋势 (2)

计算机发展趋势计算机网络技术是通信技术与计算机技术相结合的产物。计算机网络是按照网络协议&#xff0c;将地球上分散的、独立的计算机相互连接的集合。连接介质可以是电缆、双绞线、光纤、微波、载波或通信卫星。计算机网络具有共享硬件、软件和数据资源的功能&#xff0c;…

搜索文献_如何有效地搜索及阅读文献

解读论文写作与发表策略助您成功发表关注文献的阅读与科研息息相关&#xff0c;不做好文献调研&#xff0c;就无法真正开展课题&#xff0c;也无法掌握当前最新的研究进展&#xff0c;创新也就无从谈起。但是&#xff0c;相信很多同学&#xff0c;特别是刚读研的同学&#xff0…

显卡直通_英伟达RTX 30系显卡发布:性价比打哭2080Ti

9 月 2 日消息&#xff0c;英伟达在今天凌晨正式发布了 GeForce RTX 30 系列显卡&#xff0c;首发型号包括 RTX 3070、RTX 3080 及 RTX 3090 共三款。新一代 RTX 30 系列显卡基于三星 8nm 制程工艺打造&#xff0c;采用了全新的安培(AMPERE)架构&#xff0c;搭载第二代 RT Core…

学计算机应用用画画吗,宝宝学画画

宝宝学画画电脑版是专为儿童设计的画图软件&#xff0c;是一款界面友好的触摸式平台&#xff0c;宝宝学画画功能非常强大&#xff0c;界面简洁明晰、操作方便快捷&#xff0c;设计得很人性化。宝宝学画画为儿童用户提供友好并富有创意的使用环境&#xff0c;让他们感受用计算机…

计算机网络电子邮件的基本格式,怎样的格式才是正确的电子邮件格式?

楼主&#xff1a;你好&#xff0c;很高兴为你解答。电子邮件(E-mail)是建立在计算机网络上的一种通信形式。计算机用户可以利用网络传递电子邮件&#xff0c;实现相互通信。电子邮件可在计算机局域网上进行&#xff0c;也可在计算机广域网上进行。进行电子邮件通信&#xff0c;…

华为tsm_台积电:如果不能向华为销售芯片,其他订单可快速取代华为空缺

6月9日消息&#xff0c;据国外媒体报道&#xff0c;台积电周二表示&#xff0c;如果美国禁令禁止公司向华为销售芯片&#xff0c;其他订单可以很快取代华为空缺。台积电在年度股东会上&#xff0c;台积电董事长刘德音表示&#xff0c;我们希望(禁止公司向华为销售芯片)不要发生…

戴尔便携式计算机无法开机,戴尔笔记本电脑开不了机如何解决【解决方法】

生活在互联时代下&#xff0c;我们对笔记本的需求是无处不在的&#xff0c;不管是上班族还是学生党&#xff0c;使用笔记本办公和学习给我们的生活带来很大的便捷。但使用的过程中&#xff0c;总有可能会遇到无法预料的问题。比方说 笔记本电脑 无法开机的问题&#xff0c;当遇…

ida导入jni头文件_IDA动态调试无法导入JNI文件的解决办法

前言&#xff1a;学习过程中遇到了&#xff0c;特此记录一下。样本app链接在这里&#xff1a;https://pan.baidu.com/s/1pVLBBuBKRzDzHlBClrBA2A 提取码: 9tz8它是 2015年阿里的一个反调试app&#xff0c;我是参考这篇文章来过反调试的&#xff1a;https://blog.csdn.net/Viewz…

计算机软件名称用什么符号,[计算机软件及应用]第九章符号表.ppt

[计算机软件及应用]第九章符号表第9章 符号表 符号表 用来存放在词法分析过程中生成的有关标识符的语义特征属性信息 符号表中所登记的信息在编译的不同阶段都要用到。 例如作为语义检查的依据&#xff0c;目标代码生成阶段地址分配的依据等。 不同种类的表格所涉及的操作往往是…

mf253s移动版变全网通_中国电信发布5G全网通终端需求白皮书v2.0

2019-11-07 10:56 2019年10月31日&#xff0c;中国5G正式商用&#xff0c;标志着5G发展已进入快车道&#xff0c;整个社会各行各业对5G热情高涨&#xff0c;业界纷纷增加5G投入&#xff0c;5G终端的发展进程必将加快&#xff0c;市场空间巨大&#xff0c;潜力无限。 为更好地引…

广西 启动计算机教案,广西版六年级下册信息技术教案.docx

文档介绍&#xff1a;广西版六年级下册信息技术教案三年级下册信息技术教案1广西版六年级下册信息技术教案主题一制作Flash动画任务一美丽蝴蝶画出来一、教学目标知识与技能:①、认识flash窗口及工具栏;②、能够利用工具栏绘制图画;③、学会简单修改图画。过程与方法:通过用工具…

sap权限激活_sap角色权限设置手册V1.0

SAP角色权限设置及测试手册作者&#xff1a;邓珍石版本&#xff1a;V1.0第1页共14页SAP角色权限设置及测试手册(一)从Source Role拷贝生成Common Role.............................................................................2(二)直接创建生成Common Role ...........…

2020江苏计算机二级考试官网,2020年秋季江苏省计算机等级考试报名通知

2020年秋季江苏省高等学校计算机等级考试报名工作即将开始。现将有关事宜通知如下&#xff1a;一、报名时间和办法网上报名开放时间为&#xff1a;2020年8月28日10:00至9月4日16:00方法&#xff1a;登录信息门户(http://my.seu.edu.cn)&#xff0c;选择“教学服务”页面&#x…

质量码_在验证牛顿第二定律实验为什么要保证槽码质量m远远小于小车质量M?...

在验证牛顿第二定律实验中&#xff0c;要保证槽码总质量m远远小于小车的质量M&#xff0c;为什么要这样&#xff1f;在“验证牛顿第二定律”实验中要求测量物体所受合外力和物体的总质量,而且对这两个物理量越容易测量越好.通过“等效法”的阐述我们已经知道,绳子对小车的拉力即…

计算机论文的的格式,计算机论文格式模板.doc

计算机论文格式模板作为计算机专业的同学&#xff0c;我们应该学会如何书写一份本专业的论文。对于论文的格式和写法大家了解过吗&#xff1f;以下是精心准备的计算机论文格式模板&#xff0c;大家可以参考以下内容哦&#xff01;摘要&#xff1a;随着互联网宽带的飞速告诉的发…

拆分列成多行_把订单按货品拆分成多行(上)

办公的小伙伴们&#xff0c;今天小编来和大家分享。如何将一个单元格中有多行数据拆分成多行。看下图&#xff1a;要把订单按货品拆分成多行明细。下面给出几种不同的方法。一一一一一一一一一一一一一一一一一一一一一一方法一&#xff1a;借word来拆分内容Step1&#xff1a;把…

中北大学计算机二级负责老师,导师信息#中北大学计算机与控制工程学院研究生导师介绍#秦品乐...

姓名&#xff1a;秦品乐教育经历&#xff1a;1978年生&#xff0c;博士&#xff0c;副教授&#xff0c;硕士生导师。2009年-2011年大连理工大学工业装备与结构分析国家重点实验室从事博士后工作&#xff1b;2010年-2011年受教育部高等学校青年骨干老师国内访问学者资助在大连海…

遍历对象属性_细说JS遍历对象属性的N种方法

本人详细介绍了JS遍历对象N种方法&#xff0c;欢迎关注收藏。遍历对象属性有五种方法&#xff0c;下图为一个场景对比图。可以注意到两点&#xff1a;只有for ... in 才可以遍历原型链属性&#xff0c;且只能遍历可枚举属性。Object.getOwnPropertyNames Object.getOwnPropert…