条件查询练习题


--基础题
1.查询20号部门的员工姓名、岗位、薪资
SELECT ENAME,JOB,SAL/*,DEPTNO*/
  FROM EMP
 WHERE DEPTNO = 20;
2.查询工资超过3000的员工的姓名、薪资
SELECT ENAME,SAL
  FROM EMP
 WHERE SAL >3000;
3.查询10号部门以外的员工的所有信息
SELECT * FROM EMP
 WHERE DEPTNO <>10;
4.查询员工姓名为SMITH的员工的所有信息
SELECT * FROM EMP WHERE ENAME = 'SMITH';
SELECT * FROM EMP WHERE ENAME LIKE 'SMITH'; --模糊查询  效率偏低 不建议
5.查询1981年2月20号入职的员工的姓名和薪资
SELECT ENAME,SAL,HIREDATE FROM EMP WHERE HIREDATE = TO_DATE('19810220','YYYYMMDD'); --统一成日期类型
SELECT ENAME,SAL FROM EMP WHERE TO_CHAR(HIREDATE,'YYYYMMDD') = '19810220'; --统一成字符型
6.查询入职日期早于1982年1月1日的所有员工的姓名、入职日期
SELECT  ENAME,HIREDATE 
  FROM EMP
 WHERE TO_CHAR(HIREDATE,'YYYYMMDD') < '19820101';
SELECT ENAME,HIREDATE
  FROM EMP 
 WHERE HIREDATE < TO_DATE('19820101','YYYYMMDD');
SELECT ENAME,HIREDATE
  FROM EMP
 WHERE TO_CHAR(HIREDATE,'YYYY') < '1982';
7.找出奖金(COMM字段)大于0的员工信息
/*SELECT * FROM EMP WHERE  COMM IS NOT NULL;*/
SELECT * FROM EMP WHERE NVL(COMM,0)>0;
SELECT * FROM EMP WHERE COMM >0 /*AND COMM IS NOT NULL*/;
8.查询姓名中包含S的员工的姓名、岗位
SELECT ENAME,JOB
  FROM EMP
 WHERE ENAME LIKE '%S%';
9.查询员工姓名以S开头,且姓名总长度为5位的员工的所有信息
SELECT * FROM EMP WHERE ENAME LIKE 'S____';

10.查询员工姓名前两位是SM,后两位是TH,中间一位不清楚具体字母的员工的所有信息
SELECT * FROM EMP WHERE ENAME LIKE 'SM_TH'; 
11.查询员工姓名至少有四位,且倒数第三位是I的员工的所有信息
SELECT * FROM EMP WHERE ENAME LIKE '%_I__';
12.查询岗位是MANAGER或SALESMAN的员工信息
SELECT * FROM EMP WHERE JOB IN('MANAGER','SALESMAN');
SELECT * FROM EMP WHERE JOB ='MANAGER' OR JOB = 'SALESMAN';
13.查询SMITH和SCOTT的详细信息
SELECT * FROM EMP WHERE ENAME IN('SMITH','SCOTT');
SELECT * FROM EMP WHERE ENAME = 'SMITH' OR ENAME = 'SCOTT';
14.查询10号或20号部门的员工信息
SELECT * FROM EMP WHERE DEPTNO IN(10,20);
15.查找工资在1000-3000之间的员工姓名、工作、工资(包含1000和3000)
SELECT ENAME,JOB,SAL
  FROM EMP
 WHERE SAL BETWEEN 1000 AND 3000;
 SELECT ENAME,JOB,SAL
  FROM EMP
 WHERE SAL >= 1000 AND SAL <= 3000;
16.查询入职时间在1980年或1981年的员工信息
SELECT * 
  FROM EMP
 WHERE TO_CHAR(HIREDATE,'YYYY') IN ('1980','1981');
SELECT * 
  FROM EMP
 WHERE TO_CHAR(HIREDATE,'YYYY') = '1980'
    OR TO_CHAR(HIREDATE,'YYYY') = '1981';
SELECT * 
  FROM EMP
 WHERE HIREDATE BETWEEN TO_DATE('19800101','YYYYMMDD') AND TO_DATE('19811231','YYYYMMDD');
17.查询员工姓名,员工薪资,薪资等级(1000以下为低级,1000-3000为中级,3000以上为高级)
SELECT ENAME,SAL,
       CASE WHEN  SAL <1000 THEN '低级'
            WHEN  SAL BETWEEN 1000 AND 3000 THEN '中级'
            WHEN  SAL > 3000 THEN '高级'
        END 薪资等级
   FROM EMP;
--综合题
1.统计未按要求录入大写名字的员工
SELECT * FROM EMP;
UPDATE EMP SET ENAME='SMiTH' WHERE ENAME = 'SMITH'; 
SELECT  * FROM EMP WHERE ENAME <> UPPER(ENAME);
SELECT ENAME,UPPER(ENAME) FROM EMP;
2.查找姓名总共有5位、且不是以A开头的员工信息
SELECT * 
  FROM EMP
 WHERE ENAME LIKE '_____' AND ENAME NOT LIKE 'A%';
3.查出10号部门的办事员和30号部门的经理
SELECT * FROM EMP WHERE DEPTNO = 10 AND JOB = 'CLERK' OR DEPTNO = 30 AND JOB = 'MANAGER';
SELECT  *  
  FROM  EMP
 WHERE(DEPTNO,JOB) IN ((10,'CLERK'),(30,'MANAGER'));
4.查出10号部门的所有人、30号部门的部门经理以及所有岗位是分析师的员工
SELECT * 
  FROM EMP
 WHERE DEPTNO = 10 OR (DEPTNO = 30 AND JOB = 'MANAGER') OR JOB = 'ANALYST';
5.查出10号及30号部门的办事员及经理
SELECT * 
  FROM EMP
 WHERE DEPTNO IN (10,30) AND JOB IN ('CLERK','MANAGER');
6.找出奖金(COMM)高于工资的员工
SELECT  * FROM EMP WHERE COMM > SAL;
7.查询姓名中只有一个A字母的员工(有别的字符,但A只有一个)
SELECT * 
  FROM EMP
 WHERE ENAME LIKE '%A%'    --查到含有A字母的
      AND ENAME NOT LIKE '%A%A%';  --直到没有两个A字母的    3个同样不满足
8.年终时:有佣金的员工佣金翻倍,无佣金的员工获得薪资的10%作为佣金奖励,
现查询员工姓名,薪资、佣金调整信息,按员工编号升序排列,其中调整信息包括:
有佣金的以:“原佣金为:,调整后佣金为:”格式展示
无佣金的以:“新增佣金:”格式展示

SELECT  ENAME 姓名,
        SAL   薪资,
        COMM,
        CASE WHEN COMM IS NOT NULL THEN '原佣金为:'||COMM||',调整后佣金为:' ||COMM*2
          ELSE '新增佣金为:'||SAL *0.1
        END 佣金调整信息
  FROM  EMP
 ORDER  BY EMPNO ASC;

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值