1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
| 以下作业使用scott.emp表,以及scott.dept表完成 找出EMP表员工名字中含有A和N的员工姓名 select ename from emp where ename like '%A%' and ename like '%B%'; 列出部门编号为20的所有职位 select job from emp where deptno=20; 列出各个工种的最低薪资 select min(sal),job from emp group by job; 列出不属于SALES的部门 select dname from dept where dname<>'SALES'; 显示出员工的工资不在1000到1500之间的员工信息:名字、工资,按工资从大到小排序 select ename,sal from emp where sal between 1000 and 1500 order by sal desc; 显示职位为MANAGER和SALESMAN,年薪在15000和20000之间的员工 的信息:名字、职位、年薪 select ename,job,sal*12 from emp where job in('MANAGER','SALESMAN') and sal*12 between 15000 and 20000; 列出至少有一个员工的所有部门 select distinct deptno from emp where ename is not null; 列出最低薪资大于1500的各种工种 select job,min(sal) from emp group by job having min(sal)>1500; 列出所有员工的年薪,并按照年薪降序排列 select sal*12 from emp order by sal*12 desc; 查出emp表中所有部门的最高薪水和最低薪水,部门编号为10的部门不显示 select max(sal),min(sal),deptno from emp where deptno<>10 group by deptno; 查询emp表中的员工号以及每个人工资的80% select empno,sal*0.8 from emp; 查询emp表中员工编号,姓名,要求姓名输出小写 select empno,lower(ename) from emp; 查询emp表中员工姓名、工资和工种,要求将姓名列标题改为employeename,工资列标题改为salary select ename"employeename",sal"salary",job from emp; 显示正好为5个字符的员工的姓名 select ename from emp where length(ename)=5; 15.计算工资在1000-3000之间的员工人数 select count(ename) from emp where sal between 1000 and 3000; 16.查询工作以“sales”开头的员工的平均工资,最高工资、最低工资和总工资 select avg(sal),max(sal),min(sal),sum(sal) from emp where job like 'SALES%'; 17.查询30号部门的员工人数 select count(ename) from emp where deptno=30; 查询所有员工的平均奖金 select avg(sal) from emp ; 找出在(任何年份的)2月受聘的所有员工 select ename from emp where to_char(hiredate,'mm')=2; 请查询表DEPT中所有部门的情况 select deptno from DEPT; 请从表EMP中查找工种是职员CLERK或经理MANAGER的雇员姓名、工资 select ename,sal from emp where job='CLERK' or job='MANAGER'; 请从表EMP中查找姓名以J开头所有雇员的姓名、工资、职位 select ename,sal,job from emp where ename like 'J%'; 查询所有雇员的姓名、SAL与COMM之和 select ename,sal,sum(comm) from emp group by ename,sal; 找出平均工资最高的部门 select max(avg(sal)) from emp group by deptno; 本题以hr用户登陆,使用员工表(employees)、部门表(departments)、区域表(regions),完成以下题目 列出前五位员工的名字、工资、涨薪后的工资(涨幅为8%),以“元”为单位进行四舍五入 找出谁是最高领导,将名字按大写形式显示 求整个公司薪资最低与最高员工的薪资相差多少? select max(salary)-min(salary) from employees; 显示整个公司的最高薪资、最低薪资、平均薪资、工资总和,并四舍五入保留到整数位 select round(max(salary),0),round(min(salary),0),round(avg(salary),0),round(sum(salary),0) from employees; 选择部门30中的所有员工 select * from employees where department_id=30; 列出所有办事员(CLERK)的姓名,编号和部门编号 select last_name||first_name,employee_id,department_id from employees where job_id like '%CLERK%'; 找出奖金高于薪金的员工 select last_name||first_name from employees where commission_pct*salary>salary; 找出收取奖金的员工的不同工作 select job_id from employees where commission_pct is not null; 找出不收取奖金或收取的奖金低于100的员工 select first_name from employees where commission_pct is not null or commission_pct*salary<100; 找出早于12年前受雇的员工 select last_name||first_name from employees where months_between(sysdate,hire_date)>12; 以首字母大写的方式显示所有员工的姓名(first_name) select upper(substr(first_name,1,1))||substr(first_name,2) from employees; 显示正好为5个字符的员工的姓名 select first_name from employees where length(first_name)=5; 显示所有员工姓名(frist_name)的前三个字符 select substr(first_name,1,3) from employees; 显示所有员工的姓名(first_name),用hzn替换所有"A" select replace(first_name,'A','hzn') from employees; 显示员工的详细资料,按姓名排序 select * from employees order by first_name ; 显示满10年服务年限的员工的姓名和受雇日期 select last_name || first_name,hire_date from employees where months_between(sysdate,hire_date)>=10; 显示员工的姓名和受雇日期,根据其服务年限,将最老的员工排在最前面 select last_name || first_name,hire_date from employees order by months_between(sysdate,hire_date) desc; 显示所有员工的姓名、工作和薪金,按工作的降序排序,若工作相同则按薪金排序 select last_name ||first_name,job_id,salary from employees order by job_id desc,salary; 对于每个员工,显示其加入公司的天数 select months_between(sysdate,hire_date)*30 from employees; 以年月日的方式显示所有员工的服务年限. select months_between(sysdate,hire_date)/12 from employees; 各个部门平均、最大、最小工资、人数,按照部门号升序排序 select avg(salary),max(salary),min(salary),count(1),department_id from employees group by department_id order by department_id; 各个部门中工资大于5000的员工人数 select count(1),department_id from employees where salary>5000 group by department_id; 8.查询出每一位雇员的姓名、职位、以及领导的姓名。 (最高领导是没有部门的) select e.ename,e.job,m.ename from emp e,emp m where e.mgr=m.empno; 10.要求查询出每一个雇员的编号、姓名、工资、部门名称、工资在所在公司的工资等级 (没有部门的员工也查出来) 方法一: select e.empno,e.ename,e.sal,d.dname,s.grade from emp e,dept d, salgrade s where (e.deptno=d.deptno or e.deptno is null) and (e.sal between losal and hisal); 方法2: Select e.empno,e.ename,e.sal,d.dname,sg.grade From emp e Left Join dept d on e.deptno=d.deptno Join salgrade sg on e.sal BETWEEN sg.losal AND sg.hisal; 12.查询出每个部门的名称、位置、部门人数、平均工资 (没有认得部门) select d.dname,d.loc,count(ename),avg(nvl(sal,0)) from emp e right join dept d on e.deptno=d.deptno group by d.dname,d.loc; 8、列出没有对应部门表信息的所有雇员的姓名、工作。 (有部门但不在部门表,没有部门) select ename,job from emp where deptno not in(select deptno from dept) or deptno is null; 9、哪些部门的人数比90 部门的人数多? select count(ename) from emp where deptno=90; select deptno from emp group by deptno having count(ename)> (select count(ename) from emp where deptno=90); select dname from dept where deptno in(select deptno from emp group by deptno having count(ename)> (select count(ename) from emp where deptno=90)); 11、列出各个部门中工资最高的员工信息:名字、部门号、薪资 select e.ename,e.deptno,e.sal from emp e,(select max(sal) sal,deptno from emp group by deptno) a where e.deptno=a.deptno and e.sal=a.sal; 7.用一个sql语句完成在字符串”hello”左右各添加5个‘*’,使其最终返回’*****hello*****’(禁止使用 | | 或 concate)
|