设为首页 收藏本站
查看: 1700|回复: 0

[经验分享] ORACLE经典查询语句

[复制链接]

尚未签到

发表于 2018-9-26 06:25:54 | 显示全部楼层 |阅读模式
  scott/tiger登录数据库,
  sqlplus
  conn scott/scott
  1、显示所有部门名
  select dept.dname from dept ;
  2、显示所有雇员名及其全年收入(工资+补助),并指定列别名“年收入”
  select emp.ename as 雇员名,nvl2(comm,comm+sal,sal)*12 as 年收入from emp;
  3、显示存在雇员的所有部门号
  select emp.deptno from emp;
  4、显示工资超过2850的雇员名和工资
  select emp.ename as 雇员名,emp.sal as 工资 from emp where emp.sal>2850;
  5、显示工资不在1500到2850之间的所有雇员名及工资
  select emp.ename as 雇员名,emp.sal as 工资
  from emp where emp.sal not between 1500 and 2850;
  6、显示雇员代码为7566的雇员名及所在部门号
  Select empno,ename from emp where empno=7566;
  7、显示部门代码为10和30中工资超过1500的雇员名及工资
  select emp.ename as 雇员名,emp.sal as 工资 from emp where emp.deptno
  in(10,30) and emp.sal>1500;
  8、显示无管理者的雇员名及岗位
  select emp.ename,emp.job from emp where mgr is null;
  9、显示所有雇员的平均工资、总计工资、最高工资、最低工资
  select round(avg(emp.sal),2) as 平均工资,count(emp.sal) as 总计工资,
  max(emp.sal) as 最高工资,min(emp.sal) as 最低工资,
  from emp;
  10、显示每种岗位的雇员总数、平均工资
  select count(empno) as 总人数,round(avg(sal),2) as 平均工资
  from emp group by job;
  11、显示雇员总数,以及获得补助的雇员数
  select count(emp.empno) as 总人数,count(bonus.ename) as 补助总人数
  from emp left join bonus on emp.ename=bonus.ename;
  12、显示管理者的总人数
  select count(distinct mgr) as 管理者总人数 from emp;
  13、显示雇员工资的最大差额
  select max(sal)-min(sal) as 最大差额 from emp;
  14、显示部门代码为20的部门号,以及该部门的所有雇员名、雇员工资及岗位
  select emp.ename,emp.sal,emp.job from emp where emp.deptno=20;
  15、显示获得补助的所有雇员名、补助额以及所在部门号
  select emp.ename,bonus.sal,emp.deptno
  from emp inner join bonus on emp.ename=bonus.ename;
  16、显示所有雇员的姓名、部门编号、工资,并且列名要显示为中文
  select ename as 姓名,deptno as 部门编号,sal as 工资 from emp;
  17、显示每个部门每个岗位的平均工资、每个部门的平均工资、每个岗位的平均工资
  select a.deptno,a.job,a.deptno_job_avg,b.deptno_avg,c.job_avg
  from (select deptno,job,avg(sal) as deptno_job_avg
  from emp group by deptno,job) a left join (select deptno,avg(sal)
  as deptno_avg from emp group by deptno) b on a.deptno=b.deptno
  left join (select job,avg(sal) as job_avg from emp group by job) c
  on a.job=c.job
  order by deptno;
  18、显示工资大于1500的雇员名和工资,并且按照工资的降序排列
  select emp.ename as 雇员名,emp.sal as 工资
  from emp where emp.sal>1500 order by emp.sal desc;
  19、显示雇员部门编号为10或20的信息(要求使用IN关键字)
  select * from emp where emp.deptno in(10,20);
  20、显示雇员名的第二个字母为A的信息
  select * from emp where emp.ename like '_A%';
  21、显示没有发放补助的雇员信息
  select * from emp where ename not in(select ename from bonus);
  22、显示雇员表中记录总数
  select count(*) from emp;
  23、显示所有雇员名、雇员工资及所在部门名
  select emp.ename 雇员名,emp.sal 雇员工资,dept.deptno 部门
  from emp,dept where emp.deptno=dept.deptno;
  24、显示部门代码为20的部门名,以及该部门的所有雇员名、雇员工资及岗位
  select dept.dname,emp.ename,emp.sal,emp.job
  from emp,dept
  where emp.deptno=dept.deptno and emp.deptno=20;
  25、显示所有雇员名、雇员工资及工资级别
  select emp.ename,emp.sal,salgrade.grade
  from emp,salgrade
  where emp.sal>salgrade.losal and emp.salsalgrade.losal and emp.sal1500;
  34、按以下格式显示下面信息,条件是此人工资在所有人中最高。
  部门  姓名  工资
  select dept.dname as 部门,emp.ename as 姓名,emp.sal as 工资
  from emp,dept where emp.deptno=dept.deptno and emp.sal=(select max(emp.sal) from emp);
  35、按以下格式显示下面信息
  某人 为 某人 工作
  select a.ename as 某人为 ,b.ename as 某人 ,a.job as 工作
  from emp a,emp b where a.empno = b.mgr;
  36、为所有人长工资,标准是:10部门长10%;20部门长15%;30部门长20%其他部门长18%(要求用DECODE函数)
  select round(decode(deptno,'10',sal*(1+0.1), '20',sal*(1+0.15), '30',sal*(1+0.2),sal*(1+0.18)),2) as 工资 from emp
  update emp
  set sal=decode(deptno,'10',sal*(1+0.1), '20',sal*(1+0.15), '30',sal*(1+0.2),sal*(1+0.18));
  37、根据工作年限长工资,标准是:为公司工作了几个月就长几个百分点。
  select round(sal * (1+(sysdate - hiredate)/365/12/100),2) from emp
  update emp
  set sal= round(sal * (1+(sysdate - hiredate)/365/12/100),2);
  38、查询出king所在部门的部门号\部门名称\部门人数
  select e.deptno as 部门号,d.dname as 部门名称, (select count(*)
  from (select deptno
  from emp where deptno in (select deptno
  from emp where ename='KING') ) ) as 部门人数
  from emp e, dept d
  where e.deptno = d.deptno and e.ename = 'KING';
  39、查询出king所在部门的工作年限最大的员工名字
  select ename, hiredate from emp
  where hiredate in (select min(hiredate)
  from (select hiredate from emp where deptno in
  (select deptno from emp where ename='KING') ));
  40、查询出管理员工人数最多的人的名字和他管理的人的名字
  select a.ename 员工,b.ename as 管理员
  from emp a join emp b on a.mgr=b.empno
  where a.mgr=(
  select mgr from emp
  group by mgr
  having count(mgr)=(
  select max(cn)
  from (
  select count(mgr) as cn,mgr
  from emp
  group by mgr
  ) a
  )
  )
  order by a.mgr;
  41、查询出工资成本最高的部门的部门号和部门名称
  select DEPTNO 部门编号,DNAME 部门名称
  from Dept
  where DEPTNO=(select deptno
  from Emp
  group by deptno
  having sum(sal)=( select max(SSAL)
  from (select sum(sal) as SSAL, deptno
  from emp
  group by deptno) a
  )
  );
  42、查询出工资不超过2500的人数最多的部门名称
  select deptno as 部门编号,DNAME as 部门名称
  from dept
  where deptno=(select deptno
  from (select count(empno) as cn,deptno
  from Emp
  where SAL (select avg(sal) from emp)
  group by deptno
  having count(*) >= all (  select count(*)
  from emp e
  where e.sal > (select avg(sal) from emp)
  group by e.deptno
  )
  );


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-602070-1-1.html 上篇帖子: OOW第一天 Oracle宣布Oracle-Sun系统超越IBM 下篇帖子: 关于 oracle blob 写入读出修改
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表