Oracle单行函数课后练习题

1. 显示系统时间(注:日期+时间)

a) select to_char(sysdate,’yyyy-mm-dd hh:mi:ss’)

b) from dual

clip_image002

2. 查询员工号,姓名,工资,以及工资提高百分之20%后的结果(new salary)

a) select employee_id,last_name,salary,salary*1.2 “new salary”

b) from employees

clip_image004

3. 将员工的姓名按首字母排序,并写出姓名的长度(length)

a) select last_name,length(last_name)

b) from employees

c) order by last_name asc

clip_image006

Asc是升序 desc是降序

clip_image008

4. 查询各员工的姓名,并显示出各员工在公司工作的月份数(worked_month)。

a) select last_name,hire_date,round(months_between(sysdate,hire_date),1) workded_month

b) from employees

clip_image010

中文字符必须用双引号括起来

clip_image012

Months_between(系统时间,要计算的时间):这个函数用于计算月份差

Round(要计算的数,精确到小数点后第几位):这个函数用于四舍五入

clip_image014

5. 查询员工的姓名,以及在公司工作的月份数(worked_month),并按月份数降序排列

a) Select last_name,hire_date,round(months_between(sysdate,hire_date),1) workded_month

b) from employees

c) order by workded_month desc

clip_image016

clip_image018

6. 做一个查询,产生下面的结果

<last_name> earns <salary> monthly but wants <salary*3>

Dream Salary

King earns $24000 monthly but wants $72000

select last_name || ‘ earns ‘|| to_char(salary,’$999999′)||’ monthly,but wants ‘||to_char(3*salary,’$999999’) “Dream Salary”

from employees

clip_image020

clip_image022

修改成中文

clip_image024

clip_image026

总结:赋予显示名的中文字符用双引号,但是拼接的字符串只能用单引号

7. 使用decode函数,按照下面的条件:

job grade

AD_PRES A

ST_MAN B

IT_PROG C

SA_REP D

ST_CLERK E

产生下面的结果

Last_name

Job_id

Grade

king

AD_PRES

A

select last_name “Last_name”,job_id “Job_id”,decode(job_id,’AD_PRES’,’A’,’ST_MAN’,’B’, ‘IT_PROG’,’C’, ‘SA_REP’,’D’, ‘ST_CLERK’,’E’) “Grade”

from employees

clip_image028

clip_image030

换成中文

clip_image032

clip_image034

8. 将第7题的查询用case函数再写一遍。

a) select last_name “Last_name”,job_id “Job_id”,case job_id when ‘AD_PRES’then ‘A’

b) when ‘ST_MAN’ then ‘B’

c) when ‘IT_PROG’ then ‘C’

d) when ‘SA_REP’ then ‘D’

e) when ‘ST_CLERK’ then’E’ end “Grade”

f) from employees

clip_image036

clip_image038

打赏

发布者

张 大鹏

北京理想国惠玩科技有限公司CEO

发表评论

电子邮件地址不会被公开。 必填项已用*标注