oracle_sql单行函数练习(含答案)

合集下载

Oracle经典练习题及标准答案

Oracle经典练习题及标准答案

Oracle经典练习题及标准答案oracle经典练习sql/*1、选择在部门30中员工的所有信息*/select * from scott.emp where deptno = '30'/*2、列出职位为(MANAGER)的员工的编号,姓名*/select empno, ename from scott.emp where job = 'MANAGER'/*3、找出奖金高于工资的员工*/select * from scott.emp where comm > sal/*4、找出每个员工奖金和工资的总和*/select ename, sal + nvl(comm, 0) from scott.emp/*5、找出部门10中的经理(MANAGER)和部门20中的普通员工(CLERK) */select *from scott.empwhere deptno = '10'and job = 'MANAGER'unionselect *from scott.empwhere job = 'CLERK'and deptno = '20'/*6、找出部门10中既不是经理也不是普通员工,而且工资大于等于2000的员工*/ select *from scott.empwhere job != 'MANAGER'and job != 'CLERK'and sal > 2000/*7、找出有奖金的员工的不同工作*/select distinct(job) from scott.emp where comm is not null /*8、找出没有奖金或者奖金低于500的员工*/select *from scott.empwhere comm is not nulland comm > 500/*9、显示雇员姓名,根据其服务年限,将最老的雇员排在最前面*/select enamefrom scott.emporder by (months_between(sysdate, hiredate) / 12) descselect ename,hiredate from scott.emp order by hiredate/*10、找出每个月倒数第三天受雇的员工*/select * from scott.emp where hiredate = last_day(hiredate) - 2/*11、分别用case和decode函数列出员工所在的部门,deptno=10显示'部门10',deptno=20显示'部门20'deptno=30显示'部门30'deptno=40显示'部门40'否则为'其他部门'*/select ename,case deptnowhen 10 then'部门10'when 20 then'部门20'when 30 then'部门30'when 40 then'部门40'else'其他部门'end 工资情况from scott.empselect ename,decode(deptno,10,'部门10',20,'部门20',30,'部门30',40,'部门40','其他部门') 工资情况from scott.emp/*12、分组统计各部门下工资>500的员工的平均工资*/select avg(sal) from scott.emp where sal > 500 group by deptno/*13、统计各部门下平均工资大于500的部门*/select deptno from scott.emp group by deptno having avg(sal) > 500 /*14、算出部门30中得到最多奖金的员工奖金*/ select max(comm) from scott.emp where deptno = 30/*15、算出部门30中得到最多奖金的员工姓名*/select enamefrom scott.empwhere deptno = 30and comm = (select max(comm) from scott.emp where deptno = 30) /*16、算出每个职位的员工数和最低工资*/select count(ename), min(sal), job from scott.emp group by job/*17、列出员工表中每个部门的员工数,和部门no */select count(ename), deptno from scott.emp group by deptno/*18、得到工资大于自己部门平均工资的员工信息*/select *from scott.emp ewhere sal > (select avg(sal) from scott.emp where e.deptno = deptno)select *from scott.emp e1,(select avg(sal) sals, deptno from scott.emp group by deptno) e2where sal > salsand e1.deptno = e2.deptno/*19、分组统计每个部门下,每种职位的平均奖金(也要算没奖金的人)和总工资(包括奖金) */select avg(nvl(comm,0)), sum(sal + nvl(comm, 0))from scott.empgroup by deptno,job/*20、笛卡尔集*/select * from scott.emp, scott.dept/*21、显示员工ID,名字,直属主管ID,名字*/select empno,ename,mgr,(select ename from scott.emp e1 where e1.empno = e2.mgr) 直属主管名字from scott.emp e2/*22、DEPT表按照部门跟EMP表左关联*/select *fromscott.dept, scott.empwherescott.dept.deptno = scott.emp.deptno(+)/*23、使用此语句重复的内容不再显示了*/select distinct (job) from scott.emp/*24、重复的内容依然显示*/select *from scott.empUNION ALLselect * from scott.emp/*23和24题和22题是一样的*//*25、只显示了两个表中彼此重复的记录。

oracle练习及答案

oracle练习及答案

oracle练习及答案测试⼀1.SQL*PLUS命令可以控制数据库(no)2.下⾯的语句是否可以执⾏成功(yes)select last_name , job_id , salary as salfrom employees;3.下⾯的语句是否可以执⾏成功(yes)select * from employees;4.找出下⾯语句中的错误select employee_id , last_namesal * 12 ANNUAL SALARYfrom employees;列于列之间未⽤逗号分隔别名应⽤引号括起来5.显⽰表departments的结构,并查询其中的全部数据desc departmentsselect * from departments;6.显⽰出表employees中的全部job_id(不能重复)select distinct job_idfrom employees;7.显⽰出表employees的全部列,各个列之间⽤逗号连接,列头显⽰成OUT_PUTselect EMPLOYEE_ID||','|| FIRST_NAME||','||LAST_NAME||','||EMAIL||','||PHONE_NUMBER||','||HIRE_DATE||','||JOB_ID||','||SALARY||','||COMMISSION_PCT||','||MANAGER_ID||','|| DEPARTMENT_ID as "OUT_PUT" from employees;测试⼆1.查询⼯资⼤于12000的员⼯姓名和⼯资SELECT FIRST_NAME, salaryFROM employeesWHERE salary > 12000;2.查询员⼯号为176的员⼯的姓名和部门号SELECT FIRST_NAME, department_idFROM employeesWHERE employee_id = 176;3.选择⼯资不在5000到12000的员⼯的姓名和⼯资SELECT FIRST_NAME, salaryFROM employeesWHERE salary NOT BETWEEN 5000 AND 12000;4.选择雇⽤时间在1998-02-01到1998-05-01之间的员⼯姓名,job_id和雇⽤时间SELECT FIRST_NAME, job_id, hire_dateFROM employeesWHERE hire_date BETWEEN '01-2⽉-98' AND '01-5⽉-98';5.选择在20和50号部门⼯作的员⼯姓名和部门号SELECT FIRST_NAME, department_idFROM employeesWHERE department_id IN (20, 50);6.选择在1994年雇⽤的员⼯的姓名和雇⽤时间SELECT FIRST_NAME, hire_dateFROM employeesWHERE hire_date LIKE '%94';7.选择公司中没有管理者的员⼯姓名及job_idSELECT FIRST_NAME, job_idFROM employeesWHERE manager_id IS NULL;8.选择公司中有奖⾦的员⼯姓名,⼯资和奖⾦SELECT FIRST_NAME, salary, commission_pctFROM employeesWHERE commission_pct IS NOT NULL;9.选择员⼯姓名的第三个字母是a的员⼯姓名SELECT FIRST_NAMEFROM employeesWHERE FIRST_NAME LIKE '__a%';10.选择姓名中有字母a和e的员⼯姓名SELECT FIRST_NAMEFROM employeesWHERE (FIRST_NAME LIKE '%e%a%' OR FIRST_NAME LIKE '%a%e%')测试三1.显⽰系统时间Select sysdate "Date" from dual2.查询员⼯号,姓名,⼯资,以及⼯资提⾼百分之20%后的结果(new salary)select empno,ename,sal, round(sal*1.20,0) as“new salary” from emp;3.将员⼯的姓名按⾸字母排序,并写出姓名的长度(length)select ename "Name" ,length(ename) "Length" from emp order by substr(ename,1,1);4.查询各员⼯的姓名,并显⽰出各员⼯在公司⼯作的⽉份数(worked_month)。

oracle sql练习题

oracle sql练习题

oracle sql练习题1. 编写一个SQL查询,找出员工表中工资最高的员工的姓名和工资。

```SELECT ename, salFROM empWHERE sal = (SELECT MAX(sal) FROM emp);```2. 编写一个SQL查询,计算出每个部门的平均工资,并按照平均工资降序排列。

```SELECT deptno, AVG(sal) as avg_salaryFROM empGROUP BY deptnoORDER BY avg_salary DESC;```3. 编写一个SQL查询,找出没有任何员工的部门(即部门中没有员工记录的部门)。

```SELECT d.deptno, d.dnameFROM dept dLEFT JOIN emp e ON d.deptno = e.deptnoWHERE e.deptno IS NULL;```4. 编写一个SQL查询,找出在每个部门中薪资排名第二高的员工的姓名和工资。

```SELECT d.dname, e.ename, e.salFROM emp eINNER JOIN dept d ON e.deptno = d.deptnoWHERE e.sal = (SELECT DISTINCT salFROM empWHERE deptno = e.deptnoORDER BY sal DESCOFFSET 1 ROW FETCH FIRST 1 ROW ONLY);```5. 编写一个SQL查询,找出拥有部门管理权限(即至少管理一个部门)且工资不超过5000的员工的姓名。

```SELECT enameFROM empWHERE empno IN (SELECT DISTINCT mgrFROM empWHERE sal <= 5000);```6. 编写一个SQL查询,找出在工资表中有重复记录的员工姓名和工资。

```SELECT ename, salFROM empGROUP BY ename, salHAVING COUNT(*) > 1;```7. 编写一个SQL查询,找出至少在两个部门工作过的员工的姓名。

oracle-sql练习题及答案

oracle-sql练习题及答案

oracle-sql练习题及答案createtabletudent(novarchar2(10)primarykey,namevarchar2(20),agenumber(2),e某varchar2(5));createtableteacher(tnovarchar2(10)primarykey,tnamevarchar2(20));createtablecoure(cnovarchar2(10),cnamevarchar2(20),tnovarcha r2(20),contraintpk_coureprimarykey(cno,tno));createtablec(novarchar2(10),cnovarchar2(10),corenumber(4,2), contraintpk_cprimarykey(no,cno));/某某某某某某某初始化学生表的数据某某某某某某//某某某某某某某某某某某某某某某初始化课程表某某某某某某某某某某某某某某某某某某某某某某某某某某某某/inertintocourevalue('c001','J2SE','t002');inertintocourevalue(' c002','JavaWeb','t002');inertintocourevalue('c003','SSH','t001') ;inertintocourevalue('c004','Oracle','t001');inertintocourevalue('c005','SQLSERVER2005','t003');inertinto courevalue('c006','C#','t003');练习:注意:以下练习中的数据是根据初始化到数据库中的数据来写的SQL 语句,请大家务必注意。

oracle sql 试题及答案

oracle sql 试题及答案

oracle sql 试题及答案在Oracle数据库管理和开发中,SQL(Structured Query Language)是一种标准化的关系型数据库语言。

在这篇文章中,我们将提供一些Oracle SQL试题及其答案,旨在帮助读者巩固和加深对Oracle SQL语言的理解。

请注意,答案中不再重复题目,仅给出相应的解答。

1. 以下SQL语句中,哪一个用于创建一个名为"Employees"的表?CREATE TABLE Employees (EmployeeID INT PRIMARY KEY,LastName VARCHAR2(50),FirstName VARCHAR2(50),DateOfBirth DATE);2. 在一个名为"Employees"的表中,你想要删除LastName为"Smith"的所有行。

你应该使用以下哪个SQL语句?DELETE FROM Employees WHERE LastName = 'Smith';3. 假设你有一个名为"Employees"的表,你想要增加一个名为"Salary"的列,数据类型为NUMBER(10,2)。

你应该使用以下哪个SQL 语句?ALTER TABLE Employees ADD (Salary NUMBER(10,2));4. 以下SQL查询语句将返回哪些列?SELECT LastName, FirstName FROM Employees;答案:该查询将返回"Employees"表中的LastName和FirstName列。

5. 以下SQL语句将返回"Employees"表中有多少条记录?SELECT COUNT(*) FROM Employees;答案:该查询将返回"Employees"表中的记录数。

oracle的sql语句的练习题及答案(员工表+部门表)

oracle的sql语句的练习题及答案(员工表+部门表)

oracle的sql语句的练习题及答案(员⼯表+部门表)⼀、创建表及初始化数据1、表说明:emp员⼯表(empno员⼯号/ename员⼯姓名/job⼯作/mgr上级编号/hiredate受雇⽇期/sal薪⾦/comm佣⾦/deptno部门编号) dept部门表(deptno部门编号/dname部门名称/loc地点)注意:⼯资 = 薪⾦ + 佣⾦2、创建表create table DEPT(DEPTNO NUMBER(2) not null,DNAME VARCHAR2(14),LOC VARCHAR2(13));alter table DEPT add constraint PK_DEPT primary key (DEPTNO);create table EMP(EMPNO NUMBER(4) not null,ENAME VARCHAR2(10),JOB VARCHAR2(9),MGR NUMBER(4),HIREDATE DATE,SAL NUMBER(7,2),COMM NUMBER(7,2),DEPTNO NUMBER(2));alter table EMP add constraint PK_EMP primary key (EMPNO);3、初始化数据insert into DEPT (DEPTNO, DNAME, LOC)values (10, 'ACCOUNTING', 'NEW YORK');insert into DEPT (DEPTNO, DNAME, LOC)values (20, 'RESEARCH', 'DALLAS');insert into DEPT (DEPTNO, DNAME, LOC)values (30, 'SALES', 'CHICAGO');insert into DEPT (DEPTNO, DNAME, LOC)values (40, 'OPERATIONS', 'BOSTON');commit;insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)values (7369, 'SMITH', 'CLERK', 7902, to_date('17-12-1980', 'dd-mm-yyyy'), 800, null, 20);insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)values (7499, 'ALLEN', 'SALESMAN', 7698, to_date('20-02-1981', 'dd-mm-yyyy'), 1600, 300, 30);insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)values (7521, 'WARD', 'SALESMAN', 7698, to_date('22-02-1981', 'dd-mm-yyyy'), 1250, 500, 30);insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)values (7566, 'JONES', 'MANAGER', 7839, to_date('02-04-1981', 'dd-mm-yyyy'), 2975, null, 20);insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)values (7654, 'MARTIN', 'SALESMAN', 7698, to_date('28-09-1981', 'dd-mm-yyyy'), 1250, 1400, 30);insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)values (7698, 'BLAKE', 'MANAGER', 7839, to_date('01-05-1981', 'dd-mm-yyyy'), 2850, null, 30);insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)values (7782, 'CLARK', 'MANAGER', 7839, to_date('09-06-1981', 'dd-mm-yyyy'), 2450, null, 10);insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)values (7788, 'SCOTT', 'ANALYST', 7566, to_date('19-04-1987', 'dd-mm-yyyy'), 3000, null, 20);insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)values (7839, 'KING', 'PRESIDENT', null, to_date('17-11-1981', 'dd-mm-yyyy'), 5000, null, 10);insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)values (7844, 'TURNER', 'SALESMAN', 7698, to_date('08-09-1981', 'dd-mm-yyyy'), 1500, 0, 30);insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)values (7876, 'ADAMS', 'CLERK', 7788, to_date('23-05-1987', 'dd-mm-yyyy'), 1100, null, 20);insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)values (7900, 'JAMES', 'CLERK', 7698, to_date('03-12-1981', 'dd-mm-yyyy'), 950, null, 30);insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)values (7902, 'FORD', 'ANALYST', 7566, to_date('03-12-1981', 'dd-mm-yyyy'), 3000, null, 20);insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)values (7934, 'MILLER', 'CLERK', 7782, to_date('23-01-1982', 'dd-mm-yyyy'), 1300, null, 10);commit;⼆、题⽬练习1.列出⾄少有⼀个员⼯的所有部门。

oracle数据库sql试题及答案

oracle数据库sql试题及答案

oracle数据库sql试题及答案Oracle数据库SQL试题及答案1. 如何查询员工表中所有员工的姓名和工资,要求工资从高到低排序?```sqlSELECT name, salaryFROM employeesORDER BY salary DESC;```2. 如何统计每个部门的员工人数?```sqlSELECT department_id, COUNT(*) AS employee_countFROM employeesGROUP BY department_id;```3. 如何查询工资高于平均值的员工信息?```sqlSELECT *FROM employeesWHERE salary > (SELECT AVG(salary) FROM employees);```4. 如何找出没有直属上司的员工?```sqlSELECT *FROM employees e1WHERE NOT EXISTS (SELECT 1FROM employees e2WHERE e1.manager_id = e2.employee_id);```5. 如何查询工资在3000到5000之间的员工姓名和工资?```sqlSELECT name, salaryFROM employeesWHERE salary BETWEEN 3000 AND 5000;```6. 如何删除员工表中所有工资低于3000的员工记录?```sqlDELETE FROM employeesWHERE salary < 3000;```7. 如何更新员工表中所有部门为10的员工的工资,增加10%?```sqlUPDATE employeesSET salary = salary * 1.1WHERE department_id = 10;```8. 如何查询员工表中每个员工的姓名和他们直属上司的姓名?```sqlSELECT AS employee_name, AS manager_name FROM employees e1JOIN employees e2 ON e1.manager_id = e2.employee_id; ```9. 如何查询员工表中每个部门的平均工资?```sqlSELECT department_id, AVG(salary) AS avg_salary FROM employeesGROUP BY department_id;```10. 如何查询员工表中工资最高的员工信息?```sqlSELECT *FROM employeesWHERE salary = (SELECT MAX(salary) FROM employees); ```。

oralce题库及答案

oralce题库及答案

一、选择题1.当你执行以下查询语句:SELECT empno,ename FROM emp WHERE empno =7782 OR empno =7876; 在WHERE 语句中,以下哪个操作符能够取代OR?A. INB. BETWEEN ……C. LIKED. <=E. >=2. 以下哪行有错?(1) SELECT deptno(2) FROM emp(3) GROUP BY deptno(4) HAVING COUNT(deptno)=(5) (SELECT max(count(deptno))(6) FROM emp(7) GROUP BY deptno);A. Line 3B. Line 4C. Line 5D. Line 7E. 都没错.3. 以下哪个命令能够被用来从表 STATE中 drop 列 UPDATE_DT ?A. ALTER TABLE STATE DROP COLUMN UPDATE_DT;B. ALTER TABLE STATE REMOVE COLUMN UPDATE_DT;C. DROP COLUMN UPDATE_DT FROM STATE;D. 你不能从那个表中DROP该列.数据概念语言是用于()的方式。

〔选择一项〕确保数据的准确性B、概念和修改数据结构C、查看数据D、删除和更新数据五、执行下面的语句:select ,from employees e, deptment dwhere (+) = ;会显示什么样的结果?A. 显示dept表的全数信息,没有对应员工以null代替B. 显示emp表的全数信息,没有对应部门以null代替C. 报错D. 语法正确,但可不能运行6、emp表结构如下:empno number(9,3)ename varchar2(10)sal number (9,3)mgr (4)什么命令能够让你添加loc列到列sal后:()A. alter table emp add column3( loc varchar2(20));B. alter table emp modify after column3 ( loc varchar2(20));C. alter table add ( sal ) column3 ( loc varchar2( 20));D. 无法指定新列显现的位置7. beginfor I in 1..10 loopif I = 3 or I = 9 then null ;else insert into ord values (I);end if ;end loop ;end ;多少行数据insert到了ord表?()A. 3B. 4C. 8D. 9E. 18. 下面哪个 like 命令会返回名字为HOTKA 的行?ename like ‘_HOT%'ename like ‘H_T%'ename like ‘%TKA_'ename like ‘%TOK%'9. 在Oracle的SQL PLUS中执行DML语句后,没有提交便正常退出后,事务将:( )A.自动回滚B.自动提交C.报错警告D.提示是不是保留11、Oracle启动的初始化参数文件搜寻顺序是:A.B.C.D.答案:从C到D到A12、显示系统时刻:答案:select sysdate from dual;13、执行下面的语句:select ,from employees e, deptment dwhere (+) = ;会显示什么样的结果?A. 显示dept表的全数信息,没有对应员工以null代替B. 显示emp表的全数信息,没有对应部门以null代替C. 报错D. 语法正确,但可不能运行1六、create table ord( ordid number (3) constraint ord_v_pk primary key,#orderdate date,ship4date date ,3item_id number (7) constraint it_v not null) ;上面的语句,哪两行有错误?a. 1b. 2c. 3d. 4e. 5要以自身的模式创建私有同义词,用户必需拥有()系统权限。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

oracle_sql单行函数练习(含答案)整理 2012-12-3Oracle单行函数的实例练习,基于Oracle自带数据库,用户名分别为hr(主要)和scott。

基本上都做出来了,但还有一道关于人民币转数字的还没有做出来,有知道的留言下哦,其他地方有错误的请指正。

Sql代码1./*1、将字符串'abc' 以10位长度输出,不足10位用#补足(分别从左边和右边补足)2.2、将字符串' abc ewr 3245 4 '去除两头空格输出3.3、将字符串'abc 234 abc abc def abc' 中'abc' 替换为'###' 输出4.4、将数字7433453.52638263 四舍五入后输出5.5、将数字743583.345234 中十位数之后数字全部忽略输出6.*/7.8.--1、将字符串'abc' 以10位长度输出,不足10位用#补足(分别从左边和右边补足)9.SELECT lpad('abc',10,'#') FROM dual;10.SELECT rpad('abc',10,'#') FROM dual;11.--2、将字符串' abc ewr 3245 4 '去除两头空格输出12.SELECT trim(' abc ewr 3245 4 ') FROM dual;13.--3、将字符串'abc 234 abc abc def abc' 中'abc' 替换为'###' 输出14.SELECT replace('abc 234 abc abc def abc','abc','###') FROM dual;15.--4、将数字7433453.52638263 四舍五入后输出16.SELECT ROUND(7433453.52638263) FROM dual;17.--5、将数字743583.345234 中十位数之后数字全部忽略输出18.SELECT round(743583.345234,-1) from DUAL;19.20./*21.6、查询hr方案中employees表,将所有员工工资上涨11.173% 后,四舍五入到十位输出22.7、将当前系统时间格式化为'YEAR MONTH DY DAY YYYY-MM-DD HH24:MI:SS'输出23.8、查询hr方案中employees表,将入职时间格式化为'YYYY-MM-DD HH24:MI:SS' 显示24.9、将当前时间加一年后格式化输出显示25.10、两个时间相减后输出26.*/27.28.--6、查询hr方案中employees表,将所有员工工资上涨11.173% 后,四舍五入到十位输出29.SELECT round(salary*(1+0.11173),-1)30.FROM employees;31.32.--7、将当前系统时间格式化为'YEAR MONTH DY DAY YYYY-MM-DD HH24:MI:SS'输出33.SELECT to_char(sysdate,'YEAR MONTH DY DAY YYYY-MM-DD HH24:MI:SS')34.FROM dual;35.--8、查询hr方案中employees表,将入职时间格式化为'YYYY-MM-DD HH24:MI:SS' 显示36.SELECT to_char(hire_date,'YYYY-MM-DD HH24:MI:SS')37.FROM employees;38.--9、将当前时间加一年后格式化输出显示39.SELECT to_char(add_months(sysdate,12),'YYYY-MM-DD')40.from dual;41.42.--10、两个时间相减后输出43.SELECT to_date(2011,'YYYY')-sysdate44.FROM dual;45.46./*47.11、查询hr下employees表中入职时间满10年的员工48.12、查询hr下employees表中2000年后入职的员工49.13、查询hr下employees表中所有98年3月入职的员工50.14、查询hr下employees表中所有在3月入职的人51.15、查询当前时间距离'1998-8-2' 的月数52.*/53.54.--11、查询hr下employees表中入职时间满10年的员工55.SELECT first_name56.FROM employees57.where months_between(sysdate,hire_date) > 10*12;58.59.--12、查询hr下employees表中2000年后入职的员工60.SELECT *61.FROM employees62.where to_char(hire_date,'YYYY') >= '2000' ;63.64.--13、查询hr下employees表中所有98年3月入职的员工65.--这里要注意用的是to_char 来进行日期比较66.SELECT *67.FROM employees68.WHERE to_char(hire_date,'YYYY-MM') = '1998-03';69.70.--14、查询hr下employees表中所有在3月入职的人71.SELECT *72.FROM employees73.WHERE to_char(hire_date,'MM') ='03';74.75.--15、查询当前时间距离'1998-8-2' 的月数76.SELECT MONTHS_BETWEEN(sysdate,to_date('1998-8-2','YYYY-MM-DD'))77.FROM dual;78.79./*80.16、将当前时间减12个月然后输出81.17、查询下一个星期一显示输出82.18、查询一个月的最后一天显示输出83.19、查询hr下employees表中入职时间在下半个月的员工84.20、查询hr下employees表中上半年入职的员工85.*/86.--16、将当前时间减12个月然后输出87.SELECT add_months(sysdate,-12)88.FROM dual;89.90.--17、查询下一个星期一显示输出91.SELECT next_day(sysdate,'星期一')92.FROM dual;93.--18、查询一个月的最后一天显示输出94.SELECT last_day(sysdate)95.FROM dual;96.97.--19、查询hr下employees表中入职时间在下半个月的员工98.SELECT *99.FROM employees100.WHERE to_char(hire_date,'DD') > '15' ;101.102.--20、查询hr下employees表中上半年入职的员工103.SELECT *104.FROM employees105.WHERE to_char(hire_date,'MM') <= '06';106.107.108./*109.21、将数字825398374.3762 格式化成字符串后输出110.22、字符串变数字'RMB825,398,374.38'111.23、查询hr下employees表将员工薪水以'$999,999,999.00' 格式显示112.24、第一个参数是null返回第三个参数,否则返回第二个参数113.SELECT nvl2(234, 42, 142) FROM dual114.25、两个参数相同返回null,否则返回第一个参数115.SELECT nullif('abc','abc') FROM dual116.*/117.--21、将数字825398374.3762 格式化成字符串后输出118.SELECT to_char(825398374.3762)119.from dual;120.121.--22、字符串变数字'RMB825,398,374.38'122.--没有写出来123.124.--23、查询hr下employees表将员工薪水以'$999,999,999.00' 格式显示125.SELECT to_char(salary,'$999,999,999.00')126.FROM employees;127.128.--24、第一个参数是null返回第三个参数,否则返回第二个参数129.SELECT nvl2(commission_pct,commission_pct,0)130.FROM employees;131.132.--25、两个参数相同返回null,否则返回第一个参数133.SELECT nullif('aaa','aaa')134.FROM dual;135.136.SELECT nullif('aaa','bbb')137.FROM dual;138.139./*140.26、查询hr下employees表中frist_name,last_name 长度相同的员工记录141.27、查询hr下employees表中first_name,last_name 首字母相同的员工记录142.29、employees表中如果员工职位是'IT_PROG'加薪10 % ,如果员工职位是'ST_CLEAK '加薪15 % ,如果是'SA_REP' 加薪20 % .143.30、查询hr下employees表中每月支出工资总额(多行函数不能和其他字段一起查询)144.*/145.146.--26、查询hr下employees表中frist_name,last_name 长度相同的员工记录147.SELECT *148.FROM employees149.WHERE length(first_name) = length(last_name);150.151.--27、查询hr下employees表中first_name,last_name 首字母相同的员工记录152.SELECT *153.FROM EMPLOYEES154.WHERE substr(first_name,1,1) = substr(last_name,1,1);155.156.--29、employees表中如果员工职位是'IT_PROG'加薪10 % ,如果员工职位是'ST_CLEAK '加薪15 % ,如果是'SA_REP' 加薪20 % .157.SELECT first_name, job_id,salary, case job_id when 'IT_PROG' then salary*(1+0.1)158.when 'ST_CLEAK' then salary*(1+0.15)159.when 'SA_REP' then salary*(1+0.2) else salary end bonus160.FROM employees ;161.162.--30、查询hr下employees表中每月支出工资总额(多行函数不能和其他字段一起查询)163.SELECT sum(salary) 工资总额164.FROM employees;。

相关文档
最新文档