综合练习(二)

news2024/11/16 8:43:28

目录

列出薪金比 SMITH 或 ALLEN 多的所有员工的编号、姓名、部门名称、领导姓名、部门人数,以及所在部门的平均工资、最高和最低工资

补充

spool


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

列出薪金比 SMITH 或 ALLEN 多的所有员工的编号、姓名、部门名称、领导姓名、部门人数,以及所在部门的平均工资、最高和最低工资

 确定要使用的数据表

emp 表:员工的编号、姓名

dept 表:部门名称

emp 表:领导姓名

emp 表:统计信息

确定已知的关联字段

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

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

第一步:知道 SMITH 或 ALLEN 的薪金,这个查询返回多行单列(WHERE 中使用)。

SQL> select sal
  2  from emp
  3  where ename in('SMITH','ALLEN');

       SAL
----------
       800
      1600

第二步:应该比里面的任意一个多即可,但是要去掉这两个员工

由于是多行单列子查询,所以使用 >ANY 完成

SQL> select e.empno,e.ename,e.sal
  2  from emp e
  3  where e.sal>any(
  4  select sal
  5  from emp
  6      where ename in('SMITH','ALLEN'))
  7      and e.ename not in('SMITH','ALLEN');

     EMPNO ENAME                       SAL
---------- -------------------- ----------
      7839 KING                       5000
      7902 FORD                       3000
      7566 JONES                      2975
      7698 BLAKE                      2850
      7782 CLARK                      2450
      7844 TURNER                     1500
      7934 MILLER                     1300
      7654 MARTIN                     1250
      7521 WARD                       1250
      7900 JAMES                       950

已选择 10 行。

第三步:找到部门名称

SQL> select e.empno,e.ename,e.sal,d.dname
  2  from emp e,dept d
  3  where e.sal>any(
  4  select sal
  5  from emp
  6      where ename in('SMITH','ALLEN'))
  7      and e.ename not in('SMITH','ALLEN')
  8      and e.deptno=d.deptno;

     EMPNO ENAME                       SAL DNAME
---------- -------------------- ---------- ----------------------------
      7839 KING                       5000 ACCOUNTING
      7902 FORD                       3000 RESEARCH
      7566 JONES                      2975 RESEARCH
      7698 BLAKE                      2850 SALES
      7782 CLARK                      2450 ACCOUNTING
      7844 TURNER                     1500 SALES
      7934 MILLER                     1300 ACCOUNTING
      7521 WARD                       1250 SALES
      7654 MARTIN                     1250 SALES
      7900 JAMES                       950 SALES

第四步:找到领导信息

SQL> select e.empno,e.ename,e.sal,d.dname,m.ename
  2  from emp e,dept d,emp m
  3  where e.sal>any(
  4  select sal
  5  from emp
  6      where ename in('SMITH','ALLEN'))
  7      and e.ename not in('SMITH','ALLEN')
  8      and e.deptno=d.deptno
  9      and e.mgr=m.empno(+);

     EMPNO ENAME                       SAL DNAME                        ENAME
---------- -------------------- ---------- ---------------------------- --------------------
      7902 FORD                       3000 RESEARCH                     JONES
      7844 TURNER                     1500 SALES                        BLAKE
      7521 WARD                       1250 SALES                        BLAKE
      7654 MARTIN                     1250 SALES                        BLAKE
      7900 JAMES                       950 SALES                        BLAKE
      7934 MILLER                     1300 ACCOUNTING                   CLARK
      7566 JONES                      2975 RESEARCH                     KING
      7698 BLAKE                      2850 SALES                        KING
      7782 CLARK                      2450 ACCOUNTING                   KING
      7839 KING                       5000 ACCOUNTING

已选择 10 行。

第五步:得到部门人数,以及部门平均工资、最高和最低工资

整个查询里面不能够直接使用GROUP BY,所以现在应该利用子查询实现统计操作

SQL> select e.empno,e.ename,e.sal,d.dname,m.ename,temp.count,temp.avg,temp.max,temp.min
  2  from emp e,dept d,emp m,(
  3  select deptno dno,count(empno) count,avg(sal) avg,max(sal) max,min(sal) min
  4      from emp
  5      group by deptno) temp
  6  where e.sal>any(
  7  select sal
  8  from emp
  9      where ename in('SMITH','ALLEN'))
 10      and e.ename not in('SMITH','ALLEN')
 11      and e.deptno=d.deptno
 12      and e.mgr=m.empno(+)
 13      and d.deptno=temp.dno;

     EMPNO ENAME                       SAL DNAME                        ENAME                     COUNT        AVG        MAX        MIN
---------- -------------------- ---------- ---------------------------- -------------------- ---------- ---------- ---------- ----------
      7902 FORD                       3000 RESEARCH                     JONES                         3 2258.33333       3000        800
      7844 TURNER                     1500 SALES                        BLAKE                         6 1566.66667       2850        950
      7654 MARTIN                     1250 SALES                        BLAKE                         6 1566.66667       2850        950
      7521 WARD                       1250 SALES                        BLAKE                         6 1566.66667       2850        950
      7900 JAMES                       950 SALES                        BLAKE                         6 1566.66667       2850        950
      7934 MILLER                     1300 ACCOUNTING                   CLARK                         3 2916.66667       5000       1300
      7566 JONES                      2975 RESEARCH                     KING                          3 2258.33333       3000        800
      7698 BLAKE                      2850 SALES                        KING                          6 1566.66667       2850        950
      7782 CLARK                      2450 ACCOUNTING                   KING                          3 2916.66667       5000       1300
      7839 KING                       5000 ACCOUNTING                                                 3 2916.66667       5000       1300

已选择 10 行。

补充

spool

在数据库实际操作中,需要将查询结果输出到指定文件中,此时可以使用 spool 命令 

spool filename [create][replace][append]|OFF|OUT

其中

filename 为输出的文件名称,默认的扩展名为 LST,后面所跟参数作用如下

create 表示创建新的文件,是默认状态

replace 表示替代已经存在的文件

append 表示把查询内容附加到已经存在的文件中

OFF|OUT 表示关闭输出

例如:

下面代码将查询结果输出到 D 盘的 temp.ext 文件中 

SQL> spool d:\temp.txt
SQL> select empno,ename,job from emp;

     EMPNO ENAME                JOB
---------- -------------------- ------------------
      7369 SMITH                CLERK
      7499 ALLEN                SALESMAN
      7521 WARD                 SALESMAN
      7566 JONES                MANAGER
      7654 MARTIN               SALESMAN
      7698 BLAKE                MANAGER
      7782 CLARK                MANAGER
      7839 KING                 PRESIDENT
      7844 TURNER               SALESMAN
      7900 JAMES                CLERK
      7902 FORD                 ANALYST

     EMPNO ENAME                JOB
---------- -------------------- ------------------
      7934 MILLER               CLERK
      8989 HELLO

已选择 13 行。

SQL> spool off

此时,我的D盘就有了这个文件,内容如下 

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

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

相关文章

探索数据结构:解锁计算世界的密码

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:数据结构与算法 贝蒂的主页:Betty‘s blog 前言 随着应用程序变得越来越复杂和数据越来越丰富,几百万、…

LabVIEW最佳传输系统设计

LabVIEW最佳传输系统设计 介绍了基于LabVIEW软件开发的最佳基带传输系统和最佳带通传输系统的设计。通过软件仿真实现了脉冲成形滤波器和匹配滤波器的设计,证明了系统在消除码间干扰和抗噪声方面的优异性能。此设计不仅激发了学生的学习兴趣,还有助于提…

kubernetes最新版安装单机版v1.21.5

k8s集群由Master节点和Node(Worker)节点组成。 1.环境 环境:centos 7资源配置:2c4g (CPU最少2c,不然k8s起不来)docker:25.0.3k8s:1.21.5 2.安装前置环境 [rootbertra…

【Android开发】01-第一个Android APP

一、改MainActivity class MainActivity : AppCompatActivity() {/*因Android的app有生命周期,故入口是OnCreate而不是main函数*/override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main…

Kubernetes的五大开源存储项目

在Kubernetes中,关于数据的持久化管理是一种挑战,对此,社区提供了多种存储的解决方案,这些方案旨在简化和优化容器化应用程序的持久化数据管理。 现介绍 Kubernetes 的五大开源存储项目,带你了解开源存储解决方案的多…

java常用应用程序编程接口(API)——LocalDateTime,LocalDate,LocalTime,ZoneId,ZonedDateTime概述

前言: 在jdk8以后,出现了更多好用的时间相关的api,整理下使用心得。打好基础,daydayup! jdk8以前使用的时间api可以看这篇: java常用应用程序编程接口(API)——Date,SimpleDateForm…

学校机房Dev c++解决中文乱码问题

工具->编译选项->勾选 编译时加入以下命令 -fexec-charsetGBK -finput-charsetUTF-8 显示中文:工具->编辑器选项->去掉第一个的勾勾。

【多线程】常见锁策略详解(面试常考题型)

目录 🌴 乐观锁 vs 悲观锁🎍重量级锁 vs 轻量级锁🍀自旋锁(Spin Lock)🎋公平锁 vs ⾮公平锁🌳可重⼊锁 vs 不可重⼊锁🎄读写锁⭕相关面试题 常⻅的锁策略 注意: 接下来讲解的锁策略不…

docker报错 fatal error: runtim: out of memory

fatal error: runtim: out of memory 真无语了 系统内存也够用 原来是虚拟机的不够用了 (原本1g已经加到2g还是会报错) 直接3台虚拟机都加到4g

Maven-install报错:Malformed \uxxxx encoding

把仓库中所有的resolver-status.properties文件全部干掉。 直接ctrla全选中delete全部删除 然后再清idea缓存重启试试

巴塞罗那世界移动大会:华为构建电信公司AI模型——MWC 2024

在巴塞罗那世界移动大会的舞台上,华为宣布推出了一款专为电信公司设计的基础模型——MWC 2024电信基础模型。这一创新技术旨在通过自然语言交互、场景化代理等功能,提升电信行业员工的工作效率,增强用户满意度,进而推动整个行业的…

拦截器Interceptor(黑马学习笔记)

学习完了过滤器Filter之后,接下来我们继续学习拦截器Interceptor。 拦截器我们主要分为三个方面进行讲解: 1.介绍下什么是拦截器,并通过快速入门程序上手拦截器 2.拦截器的使用细节 3.通过拦截器Interceptor完成登录校验功能 我们先学习第一…

基于springboot实现图书馆管理系统项目【项目源码+论文说明】

基于springboot实现图书馆管理系统演示 摘要 电脑的出现是一个时代的进步,不仅仅帮助人们解决了一些数学上的难题,如今电脑的出现,更加方便了人们在工作和生活中对于一些事物的处理。应用的越来越广泛,通过互联网我们可以更方便地…

《Spring Security 简易速速上手小册》第4章 授权与角色管理(2024 最新版)

文章目录 4.1 理解授权4.1.1 基础知识详解授权的核心授权策略方法级安全动态权限检查 4.1.2 主要案例:基于角色的页面访问控制案例 Demo 4.1.3 拓展案例 1:自定义投票策略案例 Demo测试自定义投票策略 4.1.4 拓展案例 2:使用方法级安全进行细…

【打工日常】使用docker部署在线PDF工具

一、Stirling-PDF介绍 Stirling-PDF是一款功能强大的本地托管的基于 Web 的 PDF 操作工具,使用 docker部署。该自托管 Web 应用程序最初是由ChatGPT全权制作的,现已发展到包含广泛的功能来处理您的所有 PDF 需求。允许对 PDF 文件执行各种操作&#xff0…

最详细的Nginx安装【自测可用】

1.Nginx介绍 Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非…

2024年【A特种设备相关管理(电梯)】考试总结及A特种设备相关管理(电梯)证考试

题库来源:安全生产模拟考试一点通公众号小程序 2024年A特种设备相关管理(电梯)考试总结为正在备考A特种设备相关管理(电梯)操作证的学员准备的理论考试专题,每个月更新的A特种设备相关管理(电梯…

centos7 安装 docker-compose

1、直接参考官方: Install Compose standalone | Docker Docs 1、安装命令 curl -SL https://github.com/docker/compose/releases/download/v2.24.6/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose 2、修改 docker-compose 执行权限 不修改执行权…

JavaScript高级程序设计

前言 《JavaScript高级程序设计》 第1章——什么是JavaScript DOM将整个页面抽象为一组分层节点。 BOM用于支持访问和操作浏览器的窗口。 第2章——HTML中的JavaScript 2.1 < script >元素 元素描述async立即开始下载脚本&#xff0c;但不能阻止其他页面动作&#…

力扣2月最后三天的每日一题

力扣2月最后三天的每日一题 前言2867.统计树中的合法路径数目思路确定1e5中的质数统计每个点的连接情况开始对质数点进行处理完整代码 2673.使二叉树所有路径值相等的最小代价思路完整代码 2581.统计可能的树根数目思路建立连通关系将猜测数组变为哈希表&#xff0c;方便查询利…