条件查询练习题

news/2024/7/3 19:20:06 标签: oracle, sql


--基础题
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;


http://www.niftyadmin.cn/n/1357273.html

相关文章

排序查询练习题

1.查询员工编号、姓名、薪资&#xff0c;按薪资升序排列 SELECT EMPNO,ENAME,SAL FROM EMP ORDER BY SAL; 2.查询员工编号、姓名、薪资、部门编号&#xff0c;按部门升序及薪资降序排列 SELECT EMPNO,ENAME,SAL,DEPTNO FROM EMP ORDER BY DEPTNO,SAL DESC; 3.查询除20号部门…

函数练习题

1.去除字符串“ aadde gf ”两边的空格 SELECT TRIM( aadde gf ) FROM DUAL; 2.显示所有员工姓名的前三个字符。 SELECT /*ENAME,*/SUBSTR(ENAME,1,3) FROM EMP; 3.显示正好为5个字符的员工的姓名。 SELECT * FROM EMP WHERE ENAME LIKE _____; SELECT * FROM EMP WHERE LENGT…

子查询练习题

1.找出工资高于SMITH的员工姓名&#xff0c;工资 1&#xff09;查询工资高于XXX的员工姓名和薪资 SELECT ENAME,SAL FROM EMP WHERE SAL > XXX; 2&#xff09;查询SMITH的薪资XXX SELECT SAL FROM EMP WHERE ENAME SMITH; 3) 拼接 SELECT ENAME,SAL FROM EMP WHERE SAL &…

表连接练习题

以上是表信息 ⬆ 1.查询SCORE表中最高分学生的学号和课程号。 1) 查询分数为XXX的学生的学号和课程 SELECT SNO,CNO FROM SCORES WHERE SCORE XXX; 2&#xff09;查询最高成绩XXX SELECT MAX(SCORE) FROM SCORES; 3) 合并 SELECT SNO,CNO FROM SCORES WHERE SCORE (SEL…

存储过程———>>> 包(两个存储过程一个存储函数)

/*包*/ SCOTT.EMP DBMS_OUTPUT.PUT_LINE() CREATE OR REPLACE PACKAGE PKG_BAO IS --过程&#xff1a;加工部门信息-- PROCEDURE SP_DEPT_INFO ( I_DEPTNO IN NUMBER , --部门编号 O_RESULT OUT NUMBER --运行结果 0-运行成功 1-运行失败 ); --过程&…

创建日志表

CREATE TABLE ETL_LOG ( --日志表 SP_NAME VARCHAR2(30) , --程序名称 STEP_CODE NUMBER(10) , --步骤编号 STEP_DESC VARCHAR2(300) , --步骤描述 SQL_SENTENCE CLOB , --运行的代码 RESULTT VARCHAR2(100) , --运行结果 TS …