例题

摘要:
管理最多员工的人员的领导编号-“姓名和管理人员的姓名。UNIONALL:返回每个查询的所有记录,包括重复记录。INTERSECT:返回两个查询共享的记录。MINUS:返回第一个查询中包含的记录,但不返回第二个查询中的记录。

练习

1、查询所有员工的年工资、所在部门的名称,按年薪从低往高排序

分析:

​ 1.要查询哪些字段、表

​ 2.连接条件

1查询所有员工的年工资、所在部门的名称,按年薪从低往高排序。

select e.sal*12,nvl(comm,0)年工资,dname 部门名称 
from emp e,dept d
where e.deptno=d.deptno 
order by sal asc

2查询所有员工的编号、姓名,及其上级领导的编号、姓名。显示结果按领导的年工资降序

1.要查询哪些字段、表

	e.empno  ,e.ename , b.empno   ,b.ename

	emp e,emp b 

2.连接条件
	e.mgr = b.empno 

select 	e.empno 员工编号  ,e.ename 员工名字, b.empno 领导表的员工编号  ,b.ename 领导表的员工名字
from emp e,emp b 
where e.mgr = b.empno(+)
order by b.sal*12+nvl(b.comm,0) desc ;


3查询非销售人员的 :工作名称,以及从事同一工作员工的月工资之和,要求月工资之和大于5000,输出结果按月工资之和降序排列。

1.要查询哪些字段、表
select job ,sum(sal)
from emp
where job <> 'SALESMAN'  -- 不是销售的工作有哪些
	group by job
	having sum(sal)>5000
	order by  sum(sal) desc ;


salesmane: 10  ->8000
dev:  8  -->7000
test :6  -->4000

5查询所有领取奖金和不领取奖金的员工人数、平均工资。

-- select count(*),avg(sal)
-- from emp 
-- where comm is not null and comm > 0
-- union
-- select count(*),avg(sal)
-- from emp
-- where comm is null or comm =0

select deptno,job,sum(sal) from emp group by deptno,job;
-- 各个部门的总工资
select deptno,sum(sal) from emp group by deptno
-- 总工资
select sum(sal) from emp


null:常量
select deptno,job,sum(sal) from emp group by deptno,job
union
select deptno,null,sum(sal) from emp group by deptno
union
select null,null,sum(sal) from emp

增强的group by :rollup()

select deptno,job,sum(sal) from emp group by rollup (deptno,job)

6查询每种工作的最低工资,以及领取该工资的员工姓名。


7查询出工资不超过2500的人数最多的部门名称

SQL> select d.deptno,d.dname from dept d,emp e
  2  where d.deptno = e.deptno
  3  and e.sal <= 2500
  4  group by d.deptno , d.dname
  5  having count(*) =
  6  (select max(count(*)) from emp where sal <= 2500 group by deptno);

    DEPTNO DNAME
---------- --------------
        30 SALES

8查询出管理 员工人数最多的人的名字 和他管理的人的名字。

管理 员工人数最多的人的 编号

z: 30
ls(7369): 40
w: 20

查询:最多是多少

  1. 先根据mgr分组: 根据领导分组
    最多是多少
select max(cn) from (
select  count(*) cn from emp group by mgr
);

select mgr from emp group by mgr  having  count(*) =  (select max(cn) from (
select  count(*) cn from emp group by mgr
));

8查询出管理 员工人数最多的人的名字 和他管理的人的名字。

管理 员工人数最多的人的 领导编号 -》名字 和他管理的人的名字。

select  b.ename , e.ename  from emp e
inner join  emp b  
on  e.mgr = b.empno
where e.mgr=(select mgr from emp group by mgr  having  count(MGR) =  (select max(cn) from (
select  count(MGR) cn from emp group by mgr
))) ;



select *from emp e,emp b
where e.mgr = b.empno ;

UNION(并集):返回各个查询的所有记录,不包括重复记录。
UNION ALL(并集):返回各个查询的所有记录,包括重复记录。
INTERSECT(交集):返回两个查询共有的记录。
MINUS(差集):返回 包含在第一个查询中,但不包含在第二个查询中的记录。

3):解析

误区:阅读理解

1)、正确做法:翻译 文字->SQL

select job , sum(sal)

where job <>  'salseman'

​	job,sum(sal)

​	group by job  

​	having sum(sal) > 5000   

​	order by sum(sal) desc;

group by job     意思(看你这个工作是不是销售,或者是销售对比下去)

salesmane :10 --> 8000  (比如有10个salsemane,工资总和:8000元)
  select job ,sum(sal) 
  from emp 
  where job<> 'SALESMAN' 
  group by job 
  having sum(sal)>5000 
  order by sum(sal) desc;

统计各个年份的入职人数,以及总入职人数

select * from emp
select count(*) 总人数,
sum(decode (to_char(hiredate,'yyyy'),1980,1,0))"1989",
sum(decode (to_char(hiredate,'yyyy'),1981,1,0))"1981",
sum(decode (to_char(hiredate,'yyyy'),0087,1,0))"1987"
from emp;

免责声明:文章转载自《例题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Java Calendar使用总结Linux下安装maven(mvn命令)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Linux查看机器和硬盘的SN

查看硬件RAID中硬盘的SN#sas端口:[root@~]$smartctl-a/dev/sda dmegaraid,n***序列号:6RJ974SR***#sat端口[root@~]$smarttl-a/dev/sda-dsat+megaraid,n***序列号:6BRJ974SR***查看机器SN[root@~~]$dmidcode-t1**序列号...

kettle的job中运行每行

有时,在运行作业中的每一行时,我们需要多次执行作业或转换。假设我们需要导入从开始日期到昨天的所有旧数据。手动执行作业是痛苦和错误的。Kettle可以首先计算正确的日期,然后根据每个日期执行导入作业。在主作业中,返回日期转换首先运行,实际导入数据的作业在转换后运行。它是一个子作业,负责运行每个输入日期。子作业接收每行的“date”日期参数并执行它。在演示示例中...

element ui设置表格表头高度和每一行的高度

.el-table__headertr,.el-table__headerth{padding:0;height:30px;line-height:30px;}.el-table__bodytr,.el-table__bodytd{padding:0;height:30px;line-height:30px;}...

部署springboot+vue项目文档(若依ruoyi项目部署步骤)

1: 部署Linux+nginx部署背景代码1.1因为我使用了idea工具进行开发,所以终端中的mvnclean包生成了相应的jar包。这个jar包可以在相应文件所在目录的目标中找到。linux服务器需要加载redis和nginx。redis存储缓存数据,nginx用于代理前端和后端服务。打包vue项目并将dist文件复制到tomcat的webapps目录中...

dbeaver 驱动安装

一、背景:在Windows10安装dbeaver数据库连接工具,点“测试连接”的时候出现报错如下:ErrorresolvingdependenciesMavenartifact'maven:/mysql:mysql-connector-java:RELEASE'nofound经网上查询是dbeaver驱动无法下载的问题。二、解决方法:打开“窗口”-˃“首选项...

Ansible-Tower--安装配置及破解

Ansible-Tower是将ansible的指令界面化,简明直观,简单易用。2)Ansibke-tower其实就是一个图形化的任务调度,复杂服务部署,IT自动化的一个管理平台,属于发布配置管理系统,支持Api及界面操作,Django编写。3)Ansible-tower可以通过界面从github拉取最新playbook实施服务部署,提高生产效率。...