综合练习(一)

目录

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

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


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

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

● 确定要使用的数据表

emp 表:员工姓名和薪金。

dept 表:部门名称。

emp 表:统计出部门人数。

● 确定已知的关联字段

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

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

SQL> select sal
  2  from emp
  3  where deptno=30;

       SAL
----------
      1600
      1250
      1250
      2850
      1500
       950

已选择 6 行。

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

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

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

SQL> select e.ename,e.sal
  2  from emp e
  3  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.dname
  2  from emp e,dept d
  3  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) count
    from emp
    group by deptno) temp
where e.sal > all(
    select sal from emp where deptno=30)
    and e.deptno=d.deptno
    and d.deptno=temp.dno;

结果如下 

SQL> select e.ename,e.sal,d.dname,temp.count
  2  from emp e,dept d,(
  3  select deptno dno,count(empno) count
  4      from emp
  5      group by deptno) temp
  6  where e.sal > all(
  7      select sal from emp where deptno=30)
  8      and e.deptno=d.deptno
  9      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 job
  2  from emp
  3  where ename='ALLEN';

JOB
------------------
SALESMAN

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

SQL> select e.empno,e.ename,e.job
  2  from emp e
  3  where job=(
  4  select job from emp where ename='ALLEN');

     EMPNO ENAME                JOB
---------- -------------------- ------------------
      7499 ALLEN                SALESMAN
      7521 WARD                 SALESMAN
      7654 MARTIN               SALESMAN
      7844 TURNER               SALESMAN

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

SQL> select e.empno,e.ename,e.job
  2  from emp e
  3  where job=(
  4  select job from emp where ename='ALLEN')
  5  and e.ename<>'ALLEN';

     EMPNO ENAME                JOB
---------- -------------------- ------------------
      7521 WARD                 SALESMAN
      7654 MARTIN               SALESMAN
      7844 TURNER               SALESMAN

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

SQL> select e.empno,e.ename,e.job,d.dname
  2  from emp e,dept d
  3  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           SALES
      7654 MARTIN               SALESMAN           SALES
      7844 TURNER               SALESMAN           SALES

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

SQL> select e.empno,e.ename,e.job,d.dname,temp.count
  2  from emp e,dept d,(
  3  select deptno dno,count(empno) count
  4  from emp
  5  group by deptno) temp
  6  where job=(
  7  select job from emp where ename='ALLEN')
  8  and e.ename<>'ALLEN'
  9  and e.deptno=d.deptno
 10  and d.deptno=temp.dno;

     EMPNO ENAME                JOB                DNAME                             COUNT
---------- -------------------- ------------------ ---------------------------- ----------
      7521 WARD                 SALESMAN           SALES                                 6
      7654 MARTIN               SALESMAN           SALES                                 6
      7844 TURNER               SALESMAN           SALES                                 6

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

SQL> select e.empno,e.ename,e.job,d.dname,temp.count,m.ename
  2  from emp e,dept d,(
  3  select deptno dno,count(empno) count
  4  from emp
  5  group by deptno) temp,emp m
  6  where e.job=(
  7  select job from emp where ename='ALLEN')
  8  and e.ename<>'ALLEN'
  9  and e.deptno=d.deptno
 10  and d.deptno=temp.dno
 11  and e.mgr=m.empno;

     EMPNO ENAME                JOB                DNAME                             COUNT ENAME
---------- -------------------- ------------------ ---------------------------- ---------- --------------------
      7654 MARTIN               SALESMAN           SALES                                 6 BLAKE
      7521 WARD                 SALESMAN           SALES                                 6 BLAKE
      7844 TURNER               SALESMAN           SALES                                 6 BLAKE

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【音视频处理】使用ffmpeg实现多个视频合成一个视频(按宫格视图)

先上结果 环境 硬件&#xff1a;通用PC 系统&#xff1a;Windows 测试有效 软件&#xff1a;ffmpeg 解决 0、命令 ffmpeg.exe -i input1.mp4 -i input2.mp4 -i input3.mp4 -i input4.mp4 -filter_complex "[0:v]scaleiw/2:ih/2,pad2*iw:2*ih[a]; [1:v]scaleiw/2:ih/2…

人脸2D和3D道具SDK解决方案提供商

人脸识别和增强现实技术成为了许多企业和开发者关注的焦点&#xff0c;为了满足市场对高质量、易于集成的人脸识别SDK的需求&#xff0c;美摄科技推出了一系列领先的人脸2D/3D道具SDK解决方案。 一、产品特点 高精度识别&#xff1a;美摄科技的人脸识别技术采用深度学习算法&…

【OCR识别】使用OCR技术还原加密字体文字

文章目录 1. 写在前面2. 页面分析3. 字符知识4. 加密分析 【作者主页】&#xff1a;吴秋霖 【作者介绍】&#xff1a;Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作&#xff01; 【作者推荐】&#xff1a;对JS逆向感兴趣的朋…

VirtualBox虚拟机安装 Linux 系统

要想学习各种计算机技术&#xff0c;自然离不开Linux系统。并且目前大多数生产系统都是安装在Linux系统上。常用的Linux系统有 Redhat&#xff0c;Centos&#xff0c;OracleLinux 三种。 三者的区别简单说明如下&#xff1a; Red Hat Enterprise Linux (RHEL): RHEL 是由美国…

微信小程序构建npm失败解决方式

安装完所需要的依赖后&#xff0c;在微信开发者工具菜单栏中选择&#xff1a;“工具” -> “构建 npm”&#xff0c;但是失败。 解决方法&#xff1a;修改 project.config.json 开发者工具创建的项目&#xff0c;miniprogramRoot 默认为 miniprogram&#xff0c;package.js…

Vue3自定义文件列表页面(含上传、搜索、复制链接)

文章目录 一、代码展示二、代码解读三、结果展示 一、代码展示 <template><div class"container"><h1>文件列表</h1><div class"header-actions"><a-input placeholder"输入关键词搜索" v-model:value"…

element-ui附件上传及在线查看详细总结,后续赋源码

一、附件上传 1、在element-ui上面复制相应代码 a、accept"image/*,.pdf,.docx,.xlsx,.doc,.xls" 是规定上传文件的类型&#xff0c;若是不限制&#xff0c;可以直接将accept‘all即可&#xff1b; b、:action"action" 这个属性就是你的上传附件的地址&am…

spring boot集成Elasticsearch 7.16.3

环境&#xff1a;Elasticsearch 版本 7.16.3 Elasticsearch for windows下载地址 windows 若依 spring boot版本 2.6.0 pom文件添加 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch<…

细数Android开发者的艰辛历程,android零基础

首先我们来看一下组件化项目和传统项目的区别: 在传统的项目里 我们通常情况下会有一个commonLib的Libary模块和一个app的application模块&#xff0c;业务中的逻辑都写在app中各个功能模块放到不同的包下。这样做有以下几个主要的缺点&#xff1a; 1.无论分包做的再好&…

LLM@本地语言大模型@Gemma的安装与使用@dockerDesktop的安装和启动

文章目录 准备refsollama安装过程2b模型的效果小结&#x1f47a; ollama的进一步使用帮助文档查看ollama安装了哪些模型使用皮肤来使聊天更易用 使用Chatbot UI皮肤安装docker&#x1f47a;启动docker载入和退出dockerchatbot 网页版皮肤 使用命令行聊天小结&#x1f47a; 准备…

探索口袋中的远程控制神器

在这个科技日新月异的时代&#xff0c;我们的生活被各种手机软件所包围。几乎每个人都有一个甚至多个手机&#xff0c;你是否也有遇到过需要远程操作自己某一台手机的场景呢&#xff1f;今天&#xff0c;我要向大家推荐一款神奇的手机远程操作神器&#xff0c;让你可以随时随地…

tomcat安装步骤流程

安装tomcat是基于安装java的基础上的 JAVA 举例说明&#xff1a; 关闭防火墙 下载java [rootlocalhost ~]#yum install java -y rootlocalhost ~]#yum install epel-release.noarch -y [rootlocalhost ~]#yum provides */javac [rootlocalhost data]#yum install java-1.8.0-o…

Intel SGX 概述 --潦草笔记

文章目录 前言一、SGX介绍1.1 指令介绍1.2 数据结构 二、内存保护过程2.1 enclave页面缓存&#xff08;EPC&#xff09;2.2 Enclave页面缓存映射&#xff08;EPCM&#xff09; 三、部署SGX参考资料 前言 SGX是Intel开发的新的处理器技术&#xff0c;可以在计算平台上提供一个可…

Leetcode583. 两个字符串的删除操作 -代码随想录

题目&#xff1a; 代码(首刷自解 2024年2月29日&#xff09;&#xff1a; class Solution { public:// 动态规划 好像和找最长公共子序列一样&#xff1f;int minDistance(string word1, string word2) {int sz1 word1.size();int sz2 word2.size();// dp initvector<vec…

form 表单 转换为json-多种(通用/多维数组) 全方案

JSON 在 JavaScript 中重要&#xff0c;因其轻量、通用、易读&#xff0c;适用于数据交换、存储和传输。 为什么写这个文章&#xff0c;废话不多&#xff0c;直接近主题。 一、通用 一般采用jquery编写 var key $(#"cyberwin_form_card_newadd").serialize(); 结…

自动化测试摸索:python+selenium+pytest(持续更新.....)

一、环境搭建 1、python 安装 下载链接&#xff1a;Python Releases for Windows | Python.org 自己选择合适的版本下载 当下载完毕时&#xff0c;找到该安装程序&#xff1a;python-3.12.2-amd64.exe文件&#xff0c;双击启动安装向导。 为了防止C:盘文件因系统故障或者无…

C# 高阶语法 —— Winfrom链接SQL数据库的存储过程

存储过程在应用程序端的使用的优点 1 如果sql语句直接写在客户端&#xff0c;以一个字符串的形式体现的&#xff0c;提示不友好&#xff0c;会导致效率降低 2 sql语句写在客户端&#xff0c;可以利用sql注入进行攻击&#xff0c;为了安全性&#xff0c;可以把sql封装在…

H3C防火墙安全授权导入

一、防火墙授权概述 前面我们已经了解了一些防火墙的基本概念&#xff0c;有讲过防火墙除了一些基本功能&#xff0c;还有一些高级安全防护&#xff0c;但是这些功能需要另外独立授权&#xff0c;不影响基本使用。这里以H3C防火墙为例进行大概了解下。 正常情况下&#xff0c;防…

01-prometheus监控系统-安装部署prometheus

一、准备环境 主机名ip配置prometheus-server3110.0.0.311核1g-20GBprometheus-server3210.0.0.311核1g-20GBprometheus-server3310.0.0.311核1g-20GB 二、下载/上传软件包 1&#xff0c;软件包地址 这里给大家准备了百度云盘的安装包&#xff1b; 链接&#xff1a;https:/…

upload-Labs靶场“1-5”关通关教程

君衍. 一、环境搭建二、第一关 前端JS检测后缀1、源码分析2、禁用浏览器JS上传3、burp抓包修改 三、第二关 MIME头验证1、源码分析2、burp抓包绕过 四、第三关 PHP3绕过1、源码分析2、PHP3绕过 五、第四关 .htaccess重写绕过1、源码分析2、.htaccess复写 六、第五关 黑名单大小…