综合练习(一)

目录

列出薪金高于部门 30 的所有员工薪金的员工姓名和薪金、部门名称、部门人数

列出与 ALLEN从事相同工作的所有员工及他们的部门名称、部门人数、领导姓名


Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645

列出薪金高于部门 30 的所有员工薪金的员工姓名和薪金、部门名称、部门人数

● 确定要使用的数据表

emp 表:员工姓名和薪金。

dept 表:部门名称。

emp 表:统计出部门人数。

● 确定已知的关联字段

员工与部门:emp.deptno=dept.deptno 

第一步:找到部门 30 所有员工的薪金

SQL> select sal2  from emp3  where deptno=30;SAL
----------16001250125028501500950已选择 6 行。

第二步:以上查询中返回的是多行单列的数据,

那么此时就可以使用 3 种判断符判断:IN、ANY、ALL。

根据要求需要找到所有员工,因此使用“>ALL”。

SQL> select e.ename,e.sal2  from emp e3  where e.sal > all(4      select sal from emp where deptno=30);ENAME                       SAL
-------------------- ----------
JONES                      2975
FORD                       3000
KING                       5000

第三步:要找到部门的信息,自然在 from子句之后引入 dept 表,而后要消除笛卡尔积。用内连接

SQL> select e.ename,e.sal,d.dname2  from emp e,dept d3  where e.sal > all(4      select sal from emp where deptno=30)5      and e.deptno=d.deptno;ENAME                       SAL DNAME
-------------------- ---------- ----------------------------
JONES                      2975 RESEARCH
FORD                       3000 RESEARCH
KING                       5000 ACCOUNTING

第四步:需要统计出部门人数的信息

思考如下。

如果要进行部门的人数统计,那么一定要按照部门分组

在使用分组的时候,SELECT 子句只能够出现分组字段与统计函数

此时就出现了一个矛盾,因为 select 子句里面有其他字段,所以不可能直接使用 group by 分组,所以可以考虑利用子查询分组,即在 from子句之后使用子查询先进行分组统计,而后将临时表继续采用多表查询操作

select e.ename,e.sal,d.dname,temp.count
from emp e,dept d,(select deptno dno,count(empno) countfrom empgroup by deptno) temp
where e.sal > all(select sal from emp where deptno=30)and e.deptno=d.deptnoand d.deptno=temp.dno;

结果如下 

SQL> select e.ename,e.sal,d.dname,temp.count2  from emp e,dept d,(3  select deptno dno,count(empno) count4      from emp5      group by deptno) temp6  where e.sal > all(7      select sal from emp where deptno=30)8      and e.deptno=d.deptno9      and d.deptno=temp.dno;ENAME                       SAL DNAME                             COUNT
-------------------- ---------- ---------------------------- ----------
FORD                       3000 RESEARCH                              3
JONES                      2975 RESEARCH                              3
KING                       5000 ACCOUNTING                            3

列出与 ALLEN从事相同工作的所有员工及他们的部门名称、部门人数、领导姓名

确定要使用的数据表

emp 表:员工信息

dept 表:部门名称

emp 表:领导信息

确定已知的关联字段

员工与部门:emp.deptno=dept.deptno

员工与领导:emp.mgr=memp.empno

 第一步:没有 ALLEN的工作就无法知道哪个员工满足条件,需要找到 ALLEN的工作

SQL> select job2  from emp3  where ename='ALLEN';JOB
------------------
SALESMAN

第二步:以上的查询返回的是单行单列,所以只能够在 where子句或者是 having子句中使用,根据现在的需求需在 where子句中使用,对所有的员工信息进行筛选

SQL> select e.empno,e.ename,e.job2  from emp e3  where job=(4  select job from emp where ename='ALLEN');EMPNO ENAME                JOB
---------- -------------------- ------------------7499 ALLEN                SALESMAN7521 WARD                 SALESMAN7654 MARTIN               SALESMAN7844 TURNER               SALESMAN

第三步:如果不需要重复信息,可以删除 ALLEN

SQL> select e.empno,e.ename,e.job2  from emp e3  where job=(4  select job from emp where ename='ALLEN')5  and e.ename<>'ALLEN';EMPNO ENAME                JOB
---------- -------------------- ------------------7521 WARD                 SALESMAN7654 MARTIN               SALESMAN7844 TURNER               SALESMAN

第四步:部门名称只需要加入 dept 表即可

SQL> select e.empno,e.ename,e.job,d.dname2  from emp e,dept d3  where job=(4  select job from emp where ename='ALLEN')5  and e.ename<>'ALLEN'6  and e.deptno=d.deptno;EMPNO ENAME                JOB                DNAME
---------- -------------------- ------------------ ----------------------------7521 WARD                 SALESMAN           SALES7654 MARTIN               SALESMAN           SALES7844 TURNER               SALESMAN           SALES

第五步:此时的查询不可能直接使用 group by 进行分组,所以需要使用子查询实现分组

SQL> select e.empno,e.ename,e.job,d.dname,temp.count2  from emp e,dept d,(3  select deptno dno,count(empno) count4  from emp5  group by deptno) temp6  where job=(7  select job from emp where ename='ALLEN')8  and e.ename<>'ALLEN'9  and e.deptno=d.deptno10  and d.deptno=temp.dno;EMPNO ENAME                JOB                DNAME                             COUNT
---------- -------------------- ------------------ ---------------------------- ----------7521 WARD                 SALESMAN           SALES                                 67654 MARTIN               SALESMAN           SALES                                 67844 TURNER               SALESMAN           SALES                                 6

第六步:找到对应的领导信息,直接使用自身关联

SQL> select e.empno,e.ename,e.job,d.dname,temp.count,m.ename2  from emp e,dept d,(3  select deptno dno,count(empno) count4  from emp5  group by deptno) temp,emp m6  where e.job=(7  select job from emp where ename='ALLEN')8  and e.ename<>'ALLEN'9  and e.deptno=d.deptno10  and d.deptno=temp.dno11  and e.mgr=m.empno;EMPNO ENAME                JOB                DNAME                             COUNT ENAME
---------- -------------------- ------------------ ---------------------------- ---------- --------------------7654 MARTIN               SALESMAN           SALES                                 6 BLAKE7521 WARD                 SALESMAN           SALES                                 6 BLAKE7844 TURNER               SALESMAN           SALES                                 6 BLAKE

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

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

相关文章

基于JSON的Ollama和LangChain agent

到目前为止&#xff0c;我们都可能意识到&#xff0c;通过为LLMs提供额外的工具&#xff0c;我们可以显著增强它们的功能。 例如&#xff0c;即使是ChatGPT在付费版本中也可以直接使用Bing搜索和Python解释器。OpenAI更进一步&#xff0c;为工具使用提供了经过优化的LLM模型&am…

js方法 提前结束循环

http://t.csdnimg.cn/j0gkOhttp://t.csdnimg.cn/j0gkO 一、各种循环方法如何跳出整个循环&#xff1f; 对于forEach()方法&#xff0c;目前似乎没有比较优雅的跳出整个循环的方法&#xff0c;如果你实在要用forEach()方法并且需要在某种条件下跳出整个循环提高遍历效率&#x…

政安晨:【掌握AI的深度学习工具Keras API】(二)—— 【使用内置的训练循环和评估循环】

渐进式呈现复杂性&#xff0c;是指采用一系列从简单到灵活的工作流程&#xff0c;并逐步提高复杂性。这个原则也适用于模型训练。Keras提供了训练模型的多种工作流程。这些工作流程可以很简单&#xff0c;比如在数据上调用fit()&#xff0c;也可以很高级&#xff0c;比如从头开…

uniapp实战:父子组件传参之子组件数量动态变化

需求说明 现有的设置单元列表,每个带有虚线加号的可以看做是一组设置单元,点击加号可以添加一组设置单元.点击设置单元右上角可以删除对应的设置单元. 实现思路说明 利用数组元素添加或是删除的方式实现页面数量动态变化.由于每个设置单元内容都相同所以单独封装了一个子组件.…

高效备考2025年AMC8数学竞赛:2000-2024年AMC8真题练一练

如何提高小学和初中数学成绩&#xff1f;小学和初中可以参加的数学竞赛有哪些&#xff1f;不妨了解一下AMC8美国数学竞赛&#xff0c;现在许多小学生和初中生都在参加这个比赛。如果孩子有兴趣&#xff0c;有余力的话可以系统研究AMC8的历年真题&#xff0c;即使不参加AMC8竞赛…

YOLOv9大幅度按比例减小模型计算量!加快训练!

一、代码及论文链接&#xff1a; 代码链接&#xff1a;GitHub - WongKinYiu/yolov9: Implementation of paper - YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information 论文链接&#xff1a;https://github.com/WongKinYiu/yolov9/tree/main 二…

02| JVM堆中垃圾回收的大致过程

如果一直在创建对象&#xff0c;堆中年轻代中Eden区会逐渐放满&#xff0c;如果Eden放满&#xff0c;会触发minor GC回收&#xff0c;创建对象的时GC Roots&#xff0c;如果存在于里面的对象&#xff0c;则被视为非垃圾对象&#xff0c;不会被此次gc回收&#xff0c;就会被移入…

深度学习500问——Chapter02:机器学习基础(1)

文章目录 前言 2.1 基本概念 2.1.1 大话理解机器学习本质 2.1.2 什么是神经网络 2.1.3 各种常见算法图示 2.1.4 计算图的导数计算 2.1.5 理解局部最优与全局最优 2.1.5 大数据与深度学习之间的关系 2.2 机器学习学习方式 2.2.1 监督学习 2.2.2 非监督式学习 2.2.3 …

TVM 和模型优化的概述(1)

文章目录 1. 从 Tensorflow、PyTorch 或 Onnx 等框架导入模型&#xff08;model&#xff09;。2.翻译成 Relay3. lower 到 张量表达式。4. 使用 auto-tuning 模块 AutoTVM 或 AutoScheduler 搜索最佳 schedule。5. 选择最佳配置进行模型编译。6. lower 到 TIR。7. 编译成机器码…

波奇学Linux:共享内存

进程通信的前提&#xff1a;不同的进程看到同一份的资源 直接原理:同一块物理内存映射到不同进程的共享区 共享内存拆解&#xff1a; 1.申请内存&#xff0c;通过页表映射到进程地址空间 2.返回首地址&#xff0c;便于进程利用 3.释放共享内存&#xff0c;去关联 4.内存的申请…

flex的5种常见使用

Flex 布局教程&#xff1a;语法篇 文章目录 一.基本概念二 例子 其实我每次记一个样式标签,都是根据英文来记,但是justify-content和align-items确实让我迷惑,这次我打算只记 justify-content属性定义了项目在主轴上的对齐方式,好好总结一下用法~ 一.基本概念 采用 Flex 布局…

SpringBoot 事务失效及其对应解决办法

简介 本文主要讲述Spring事务会去什么情况下失效及其解决办法 Spring 通过AOP 进行事务控制&#xff0c;如果操作数据库报异常&#xff0c;则会进行回滚&#xff1b;如果没有报异常则会提交事务&#xff1b;但是&#xff0c;如果Spring 事务失效&#xff0c;会导致数据缺失/重…

【STM32】STM32学习笔记-独立看门狗和窗口看门狗(47)

00. 目录 文章目录 00. 目录01. WDG概述02. 独立看门狗相关API2.1 IWDG_WriteAccessCmd2.2 IWDG_SetPrescaler2.3 IWDG_SetReload2.4 IWDG_ReloadCounter2.5 IWDG_Enable2.6 IWDG_GetFlagStatus2.7 RCC_GetFlagStatus 03. 独立看门狗接线图04. 独立看门狗程序示例105. 独立看门…

OD(12)之Mermaid思维导图(Mindmap)

OD(12)之Mermaid思维导图(Mindmap)使用详解 Author: Once Day Date: 2024年2月29日 漫漫长路才刚刚开始… 全系列文章可参考专栏: Mermaid使用指南_Once_day的博客-CSDN博客 参考文章: 关于 Mermaid | Mermaid 中文网 (nodejs.cn)Mermaid | Diagramming and charting tool…

postman传参与返回值切换为左右显示的操作

目录 第一步 点击“Settings”&#xff0c;在下拉框选择“Settings” 第二步 在默认打开的General页面&#xff0c;参照下图改动两处 第一步 点击“Settings”&#xff0c;在下拉框选择“Settings” 第二步 在默认打开的General页面&#xff0c;参照下图改动两处 附上修改后…

opencv中的rgb转gray的计算方法

转换原理 在opencv中&#xff0c;可以使用cv2.cvtColor函数将rgb图像转换为gray图像。示例代码如下&#xff0c; import cv2img_path "image.jpg" image cv2.imread(img_path) gray_image cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) mean gray_image.mean() pri…

【AI Agent系列】【MetaGPT多智能体学习】4. 基于MetaGPT的Team组件开发你的第一个智能体团队

本系列文章跟随《MetaGPT多智能体课程》&#xff08;https://github.com/datawhalechina/hugging-multi-agent&#xff09;&#xff0c;深入理解并实践多智能体系统的开发。 本文为该课程的第四章&#xff08;多智能体开发&#xff09;的第二篇笔记。主要是对MetaGPT中Team组件…

Payment Without Change

题目链接&#xff1a;Problem - 1256A - Codeforces 解题思路&#xff1a; 题目的大致意思就是手中的硬币数拿出若干枚正好等于s&#xff0c;分三种情况 .如果n > s && b < s,输出no .如果b > s,输出yes .如果n * (a < (s / n) ? a : (s / n)) b >…

【iOS ARKit】RealityKit 同步机制

协作 Session 可以很方便地实现多用户之间的AR体验实时共享&#xff0c;但开发者需要自行负责并确保AR场景的完整性&#xff0c;自行负责虚拟物体的创建与销毁。为简化同步操作&#xff0c;RealityKit 内建了同步机制&#xff0c;RealityKit 同步机制基于 Multipeer Connectivi…

Python标准库sys常用函数、方法及代码实战解析【第108篇—标准库sys常用函数】

Python标准库sys常用函数、方法及代码实战解析 在Python的标准库中&#xff0c;sys 模块是一个常用而强大的工具&#xff0c;它提供了与Python解释器交互的函数和变量。本文将介绍sys模块的一些常用函数和方法&#xff0c;并通过实际的代码实例来解析它们的用法。 1. sys.argv…