Oracle中mysql练习总结

/*1、选择在部门30中员工的所有信息*/  

select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where deptno=30;

/*2、列出职位为(MANAGER)的员工的编号,姓名 */   

select empno,ename,job from emp where job='MANAGER';

/*3、找出奖金高于工资的员工*/  

select * from emp where comm>sal;  
   
/*4、找出每个员工奖金和工资的总和 */

select empno,ename,job,mgr,hiredate, sal+(nvl(comm,0)),deptno from emp;
   
/*5、找出部门10中的经理(MANAGER)和部门20中的普通员工(CLERK) */  

select empno,ename,deptno,job from emp where (deptno=10 and job='MANAGER')
or(deptno=20 and job='CLERK'); 

/*6、找出部门10中既不是经理也不是普通员工,而且工资大于等于2000的员工 */  
 
select empno,ename,sal,deptno from emp where  deptno=10 and job not in('MANAGER','CLERK') and sal>2000;

/*7、找出有奖金的员工的不同工作 */    

select distinct job,comm  from emp2 where comm is not null;

/*8、找出没有奖金或者奖金低于500的员工*/ 

select *from emp where comm<=500 or comm is null;    

/*9、显示雇员姓名,根据其服务年限,将最老的雇员排在最前面 */  
 
select ename,hiredate from emp order by hiredate;

/*10、找出每个月倒数第三天受雇的员工*/   
 
select * from emp where last_day(hiredate)-hiredate=2;

/*11、用函数列出员工所在的部门,deptno=10显示'部门10',

select job || deptno from emp where deptno=10
    
 /*12、分组统计各部门下工资>500的员工的平均工资*/    

  select job , round(avg(sal),2) from emp2 group by job having round(avg(sal),2)>500 ;

 /*13、统计各部门下平均工资大于500的部门*/ 

 select job ,round(avg(sal),2) from emp group by job having round(avg(sal),2)>500;   

 /*14、算出部门30中得到最多奖金的员工奖金 */ 

  select  max(comm) from emp2 where  deptno=30;
    
 /*15、算出部门30中得到最多奖金的员工姓名*/
   
  select ename , comm from emp2 

  where comm=(select max(comm) from emp2 where deptno=30);

 /*16、算出每个职位的员工数和最低工资*/  
  
   select job ,count(job),min(sal)  from emp2 group by job;
 
 /*17、列出员工表中每个部门的员工数,和部门no */

    select deptno,job ,count(job) from emp2 group by deptno,job;
 
 /*18、得到工资大于自己部门平均工资的员工信息*/  

   select e.*,d1.* from emp2 e,
       (select deptno ,round(avg(sal),2) d from emp2 group by deptno) d1
       where e.deptno=d1.deptno and e.sal>d1.d;

 
 /*19、分组统计每个部门下,每种职位的平均奖金(也要算没奖金的人)和总工资(包括奖金) */   
 
 select job,sum(sal+nvl(comm,0))总工资,round(avg(comm),2)平均奖金 from emp2 group by job;

 /*20、笛卡尔集*/  
 
  select   e.*,d.* from emp e, dept d;(全部显示)
 
 /*21、显示员工ID,名字,直属主管ID,名字*/ 
  
 select e.empno, e.ename,w.empno,w.ename from emp2 e,
    (select empno ,ename from emp2) w
    where e.mgr=w.empno;

 /*22、DEPT表按照部门跟EMP表左关联*/   

 select d.*,e.*
 from dept d
 left join emp e
 on d.deptno=e.deptno;

 
 /*23、使用此语句重复的内容不再显示了*/  
 
 select distinct(job) from emp;
    
 /*24、重复的内容依然显示 */   
 
    select *  from emp
 
 UNION ALL
 
 select * from emp;
 
 /*25、只显示了两个表中彼此重复的记录。*/   
 
  select *  
  from dept, emp 
  where dept.deptno=emp.deptno;
  
 /*26、只显示了两张表中的不同记录*/ 
 
 select e.empno,e.empno,e.job,e.mgr,e.hiredate,e.sal,e.comm,d.dname,d.loc from emp e, dept d where e.deptno=d.deptno;

  27、显示员工姓名的前三个字符  
  
   select substr(job , 0 , 3) from emp;
   
   
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值