Oracle 常用函数练习题含答案
查询员工ENAME的第三个字母是A的员工的信息(使用2个函数)。
SELECT *
FROM employees
where upper(employees.first_name || employees.last_name) like '__A%';
将员工的参加工作日期按如下格式显示:月份/年份
SELECT to_char(employees.hire_date,'mm/YYYY') FROM employees;
计算2000年1月1日到现在有多少月,多少周(四舍五入)
SELECT round(months_between(sysdate,'1-Jan-2000'),2) as "月",
round((sysdate-to_date('2000-01-01','yyyy-mm-dd'))/7,2) as "周"
FROM dual;
选择所有有奖金的员工的last_name , department_name , location_id , city
SELECT employees.last_name,departments.department_name,locations.location_id,locations.city
FROM employees,departments,locations
where employees.department_id = departments.department_id and
departments.location_id = locations.location_id
选择指定员工的姓名,员工号,以及他的管理者的姓名和员工号
SELECT e.last_name,e.employee_id,m.last_name,m.employee_id
FROM employees e,employees m
where e.manager_id = m.manager_id
显示姓名、hiredate?和雇员开始工作日是星期几(提示:使用to_char函数)
SELECT employees.first_name||employees.last_name as "name",
employees.hire_date,to_char(hire_date,'day')
FROM employees
写一个查询,用首字母大写,其它字母小写显示雇员的 全名,显示名字的长度,并给每列一个适当的标签,条件是满足所有雇员名字的开始字母是J、A 或 M 的雇员,并对查询结果按雇员的全名升序排序。
(提示:使用initcap、length、substr)
SELECT first_name
FROM employees
WHERE first_name LIKE 'J%'or first_name LIKE 'A%'or first_name LIKE 'M%'
查询员工姓名中中包含大写或小写字母A的员工姓名。
select first_name
from employees
where first_name like '%A%' or first_name like '%a%'
查询部门编号为10或20,入职日期在81年5月1日之后,并且姓名中包含大写字母A的员工姓名,
员工姓名长度(提示,要求使用INSTR函数,不能使用like进行判断)
select employees.first_name,departments.department_id,employees.hire_date,
length(employees.first_name)
from employees,departments
WHERE (departments.department_id = 10 or departments.department_id = 20)
and to_char(employees.hire_date,'yyyy-mm-dd') > '1-5月-81'
--and employees.hire_date >'1-5月-81'
AND instr(employees.first_name,'A') > 0
查询每个职工的编号,姓名,工资要求将查询到的数据按照要求将查询到的数据按照定的格式合并成一个字符串.
–?前10位:编号,不足部分用*填充,左对齐
SELECT LPAD(employees.employee_id,10,'*'),employees.first_name,employees.commission_pct
FROM employees
–?中间10位:姓名,不足部分用*填充,左对齐
SELECT employees.employee_id, LPAD(employees.first_name,10,'*'),employees.commission_pct
FROM employees
–后10位:工资,不足部分用*填充,右对齐
SELECT employees.employee_id,employees.first_name,RPAD(employees.commission_pct,10,'*')
FROM employees
四舍五入
select ROUND(100.456,2),round(100.456,1),round(100.456,0)
from dual
没有四舍五入 截断
select trunc(100.456,2),trunc(100.456,1),trunc(100.456,0)
from dual
查询员工一共入职多少天,当前时间-入职
select round(sysdate-employees.hire_date,2)
from employees
查询服务器当前时间
SELECT sysdate
FROM dual
查询部门10 20 的员工截止到2000年1月1日,工作了多少个月,入职的月份。
(提示:使用months_between,extract)
SELECT employees.first_name,departments.department_id, employees.hire_date,
extract(month from employees.hire_date)as 月,
--months_between(to_date(employees.hire_date,'yyyy-mm-dd'),'1-1月-2000')
months_between(employees.hire_date,'1-Jan-2000')
FROM employees,departments
WHERE departments.department_id in ('10','20');
select employees.hire_date
from employees
WHERE employees.hire_date = '17-JUN-87';
如果员工试用期6个月,查询职位不是MANAGER的员工姓名,入职日期,入职日期后的第一个星期一,
入职当月的最后一天日期。(提示:使用add_months,next_day,last_day)
SELECT employees.first_name,employees.hire_date
FROM employees
WHERE employees.first_name !='MANAGER';
显示服务器系统当前时间,格式为2007-10-12 17:11:11(提示:使用 to_char函数)
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')
from dual;
--SELECT to_char(sysdate,'yyyy-mm-dd hh:mm:ss') FROM dual;
显示姓名、hiredate?和雇员开始工作日是星期几(提示:使用to_char函数) ***
SELECT employees.first_name,to_char(employees.hire_date,'day')
FROM employees
查询员工姓名,工资,格式化的工资(¥999,999.99)(提示:使用to_char函数)
SELECT employees.first_name,to_char(employees.salary,'$999,999.99')
FROM employees
把字符串2015-3月-18 13:13:13?转换成日期格式?转换成日期格式,并计算
和系统当前时间间隔多少天。?(提示:使用to_date函数)
select round(sysdate-(to_date('2015-03-18 15:33:21','yyyy-MM-dd HH24:mi:ss')))
from dual;
--select to_date('2015-MAR-18 13:13:13','yyyy-mm-dd')
--from dual;
1.计算2000年1月1日到现在有多少月,多少周(四舍五入)。
SELECT round((MONTHS_BETWEEN(sysdate,'1-JAN-00')),2) as 月, round((sysdate - to_date('2000-01-01','yyyy-mm-dd'))/7,2) as week
FROM dual;
2.查询员工ENAME的第三个字母是A的员工的信息(使用2个函数)。
SELECT *
FROM employees
where employees.first_name like '%A%';
select *
from employees
where substr(employees.first_name,3,1)='A';
3.使用trim函数将字符串‘hello’、‘?Hello?’、分别处理得到下列字符串ello、Hello、ll、hello
SELECT trim('H' from 'Hello') as A,
trim('Hello') as B,
/*trim(both'l' from 'hello') as C,*/
substr(substr('hello',3,5),1,2),
trim('hello') as D
FROM dual
4.将员工工资按如下格式显示:123,234.00 RMB?。
select to_char('123234.00','000999.00') || 'RMB'
from dual
SELECT to_char(employees.salary,'999,999.00') || 'RMB'
FROM employees;
5.查询员工的姓名及其经理编号,要求对于没有经理的显示“No Manager”字符串。
select employees.first_name,nvl(to_char(employees.manager_id),'No Manager')
from employees
6.将员工的参加工作日期按如下格式显示:月份/年份。
SELECT employees.first_name,employees.hire_date,to_char(employees.hire_date,'hh/rr')
FROM employees
7.在员工表中查询出员工的工资,并计算应交税款:
如果工资小于1000,税率为0,
如果工资大于等于1000并小于2000,税率为10%,
如果工资大于等于2000并小于3000,税率为15%,
如果工资大于等于3000,税率为20%。
SELECT employees.first_name,
employees.salary,
lpad(employees.salary, 15, '$'),
case
when employees.salary > 0 and employees.salary < 1000 then
employees.salary * 0
when employees.salary >= 1000 and employees.salary < 2000 then
employees.salary * 0.1
when employees.salary >= 2000 and employees.salary < 3000 then
employees.salary * 0.15
when employees.salary >= 3000 then
employees.salary * 0.2
else
0
end tax
FROM employees;
8.创建一个查询显示所有雇员的?姓名和?sal。格式化sal为?15?个字符长度,用?$左填充,列标签?SALARY。
SELECT employees.first_name,lpad(employees.salary,15,'$') FROM employees
1. 组函数处理多行返回一行吗? 行
2. 组函数不计算空值吗?是 (组函数忽略空值计算)
3. where子句可否使用组函数进行过滤? 不能再where子句中使用组函数。
4. 查询公司员工工资的最大值,最小值,平均值,总和
select max(employees.salary),min(employees.salary),avg(employees.salary),sum(employees.salary)
from employees
5. 查询各job_id的员工工资的最大值,最小值,平均值,总和
SELECT employees.job_id,max(employees.salary),min(employees.salary),avg(employees.salary),
sum(employees.salary) FROM employees group by employees.job_id
6. 选择具有各个job_id的员工人数
SELECT employees.job_id,count(*) FROM employees group by employees.job_id
7. 查询员工最高工资和最低工资的差距(DIFFERENCE)
SELECT MAX(employees.salary)-MIN(employees.salary)
FROM employees
8. 查询各个管理者手下员工的最低工资,其中最低工资不能低于6000,没有管理者的员工不计算在内
SELECT manager_id, min(salary)
FROM employees
group by manager_id
having min(salary) >= 6000 and manager_id is not null;
9. 查询所有部门的名字,location_id,员工数量和工资平均值
SELECT departments.department_name,
departments.location_id,
count(*),
avg(employees.salary)
FROM departments, employees
where departments.department_id = employees.department_id
group by departments.department_name,departments.location_id
SELECT department_name,location_id,count(job_id) as "部门总人数",avg(salary)as"平均工资"
FROM departments,employees
where departments.department_id = employees.department_id
group by departments.department_name,departments.location_id
10 查询公司在1995-1998年之间,每年雇用的人数 to_char count
SELECT to_char(employees.hire_date,'yyyy'),count(*)
FROM employees
group by to_char(employees.hire_date,'yyyy')
having to_char(employees.hire_date,'yyyy') in ('1995','1996','1997','1998');
11. 查询公司在1995-1998年之间,每年雇用的人数 使用case when
total 1995 1996 1997 1998
20 3 4 6 7
SELECT count(employees.employee_id) "total",
count(decode(to_char(employees.hire_date,'yyyy'),'1995','0',null))"1995",
count(decode(to_char(employees.hire_date,'yyyy'),'1996','0',null))"1996",
count(decode(to_char(employees.hire_date,'yyyy'),'1997',0,null))"1997",
count(decode(to_char(employees.hire_date,'yyyy'),'1998',0,null))"1998"
FROM employees
where to_char(hire_date,'yyyy')
in ('1995','1996','1997','1998');
SELECT count(*)"total",
count (case when to_char(employees.hire_date,'yyyy')=1995 then '1995' else null end )"1995",
count (case when to_char(employees.hire_date,'yyyy')=1996 then '1996' else null end )"1996",
count (case when to_char(employees.hire_date,'yyyy')=1997 then '1997' else null end )"1997",
count (case when to_char(employees.hire_date,'yyyy')=1998 then '1998' else null end )"1998"
FROM employees;
Oracle 常用函数练习题含答案相关推荐
- oracle完整的练习,2021史上最全Oracle数据库基本操作练习题(含答案).docx
Oracle基本操作练习题 使用表: 员工表(emP): (empndNUMBEER) notnull ,--员工编号,表示唯一 enameZARCHAR20),--员工姓名 VARCHAR9),-- ...
- C 语言函数作业,c语言函数练习题附答案
c语言函数练习题附答案 腕范匡秉蛹陀沿民鹅袱其噶厌裹拘娶欠总娃篆仟返赴邯凭诀腐病署库颧让输众琼聪楔了拧脆连捆点腥俘磅夯乓妙菩篙逆敷抄腾棉啼和试果砸临卸褂碰浙鳞码冗夜揉讨穆对抱寅秦轻个拯烧琼书釜和隐他痉 ...
- oracle常用函数api,Oracle-API OracleAPI、oracle10G函数大全(常用函数)、 联合开发网 - pudn.com...
Oracle-API 所属分类:Oracle数据库 开发工具:SQL 文件大小:13650KB 下载次数:20 上传日期:2013-09-03 13:09:39 上 传 者:蓝 说明: Oracle ...
- 计算机一级办公软件试题,计算机一级《MS Office》练习题(含答案)
计算机一级<MS Office>练习题(含答案) 11.完整的计算机软件指的是__________. A.程序.数据与相应的文档 B.系统软件与应用软件 C.操作系统与应用软件 D.操作系 ...
- sqlserver oracle对比,sqlserver和oracle常用函数对比
sqlserver和oracle常用函数对比 数学函数 1.绝对值 S:select abs(-1) value O:select abs(-1) value from dual 2.取整(大) S: ...
- Oracle常用函数总结
文章目录 Oracle常用函数 1. 时间及日期处理函数 1.1 时间格式表示方法 1.2 日期和字符串之间的转换 1.3 时间及日期的计算方法 1.4 日期常见问题处理 2. 字符串函数及数字截取函 ...
- 计算机一级ms office模拟真题,2016计算机一级《MS Office》模拟练习题(含答案)
2016计算机一级<MS Office>模拟练习题(含答案) 答案与解析 (1)A. [解析]Windows属于单用户多任务操作系统. (2)B. [解析]ASCI1码7位编码27=128 ...
- oracle常用函数number,Oracle 常用函数介绍
Oracle常用函数介绍,包括日期函数.类型转换函数 常用日期函数 1.add_months()函数可以得到指定日期之前或之后n个月的日期 date_value:=add_months(date_va ...
- oracle中常用关键字,oracle常用函数及关键字笔记
--函数及关键字-- 1.trim,ltrim,rtrim 去除字符,无指定默认去除空格 SELECT TRIM('a' FROM 'aafhfhaaaaaaaa'), LTRIM('aafhfhaa ...
最新文章
- 问题集锦(30-35)
- ipcs ipcrm命令
- 文件权限与目录配置——笔记
- wxWidgets:命名空间
- 中动态路径加载_GOT段在linux系统中实现代码动态加载的作用和其他段的说明
- 一文讲清如何正确选择图表,学会后再也不会用错图表
- hive使用适用场景_数据分析之hive学习(四):面试题——场景输出(row_number)...
- Hadoop SequenceFile存储格式入门
- linux使用RAM_DISK根文件系统基本过程
- 分析微商分销系统的缺陷
- 关于线性回归分析的理解
- 电赛笔记【数模转换原理】
- 能源互联网理论与及其实际应用初探
- 冒充云销售的懒虫和毒虫们
- 我的程序员转行过程,聊聊程序员的职业出路在哪里?
- 二手家具回收app功能
- flappy bird游戏源代码揭秘和下载后续---移植到html5网页浏览器
- 最新IP地址数据库 全球IP数据库 国内IP数据库 国外IP数据库 CIDR掩码 2018年1月版...
- 讲座:与迷茫为友的成长(贺利坚老师,烟台大学)——完整讲座PPT,精彩与动画媲美
- 数据采集有什么难点?
热门文章
- 嵌入式SQL数据库连接简便操作
- matlab读取txt到矩阵,如何在MATLAB中将文本文件中的数据读入矩阵(How to read data from a text file into a matrix in MATLAB)...
- 自定义虚拟摇杆组件让你一劳永逸
- 检索 COM 类工厂中,出现以下错误: 8000401a
- 大物下第11章熟记内容
- python自动剪视频_用python进行视频剪辑
- Linux系统上下载磁力链接magnet,种子文件torrent,Linux安装Aria2
- 【Codeforces 723D】Lakes in Berland (dfs)
- java基于eclipse.swt实现内嵌浏览器
- 2022年最值得学习的5款开源Java框架 小白教程