一、表展示

二、练习题及答案

31.找出有佣金的员工的不同工作,按降序排列

select job, comm from empgj where comm is not null order by comm desc;
select job, comm from empgj where comm != 0 order by comm desc;

SQL中判断非空(null)不能用等号,因为null在SQL中被看作特殊符号,必须使用关键字 is和not,如第一句所示

排序写法:order by +字段名+ 排序方式(asc/desc)
asc:按升序排列,也是默认排序可省略不写
desc:按降序排列

32.找出不收取佣金或收取的佣金低于500的员工

select ename, commfrom empgjwhere nvl(comm, 0) = 0or comm < 500;

33.找出各月倒数第3天受雇的所有员工并且按月降序排序

select ename, hiredatefrom empgjwhere last_day(hiredate) - 2 = hiredateorder by to_char(hiredate, 'mm') desc;

这里to_char()函数取出了雇佣日期的月份,因为在向表插数据时已经规定好了格式:

insert into empgj(empno,ename,job,mgr,hiredate,sal,comm,deptno) values     (7369,'smith','clerk',7902,to_date('1980-12-17','yyyy/mm/dd'), 800.00,'',20); 

to_char()函数的用法可参考这里:点击打开链接

last_day()函数的用法可参考这里:点击打开链接

34.找出早于12年前受雇的员工,并且按年来分组,倒序排序

(1)select ename, to_char(hiredate, 'yyyy')from empgjwhere to_char(hiredate, 'yyyy') < (to_char(sysdate, 'yyyy') - 13)order by to_char(hiredate, 'yyyy') desc;
(2)select ename, to_char(hiredate, 'yyyy')from empgjwhere months_between(sysdate, hiredate) / 12 > 12order by to_char(hiredate, 'yyyy') desc;

两种写法不同的是计算受雇年限的方法不同,第一种直接算年差,第二种算月差然后除以12得年差

34.以首字母大写的方式显示所有员工的姓名

select initcap(ename) from empgj;

initcap() 返回字符串并将字符串的第一个字母变为大写

35.显示正好为5个字符的员工的姓名

select ename from empgj where length(ename) = 5;

36.显示不带有"R"的员工的姓名

select ename from empgj where ename not like '%R%';

37.显示所有员工姓名的前三个字符

select substr(ename, 1, 3), ename from empgj;

substr()函数的用法可参考这里:点击打开链接

38.显示所有员工的姓名,用A替换所有"a"

select ename, replace(ename, 'a', 'A') from empgj;

replace()函数用法:replace(原字段,"原字段旧内容","原字段新内容")

39.显示员工的详细资料,按姓名排序

select empno, ename, job, mgr, hiredate, sal, comm, deptnofrom empgjorder by ename;

40.显示所有员工的姓名、工作和薪金,按工作的降序排序,若工作相同则按薪金排序

select ename, job, sal from empgj order by job desc, sal asc;

order by 后面跟多列时,先按第一列排,再按第二列排,以此类推

order by用法可以参考这里:点击打开链接

41.显示所有员工的姓名、加入公司的年份和月份,按受雇日期所在月排序,若月份相同则将最早年份的员工排在最前面

select ename,to_char(hiredate, 'yyyy') as year,to_char(hiredate, 'mm') as monthfrom empgjorder by month asc , year asc;

order by可使用字段别名来为字段排序

42.显示在一个月为30天的情况所有员工的日薪金,保留2位小数

select ename, round(sal / 30, 2) dailysal from empgj;

round()函数用法可以参考这里:点击打开链接

43.找出在(任何年份的)2月受聘的所有员工

select ename, hiredate from empgj where to_char(hiredate, 'mm') = 2;

44.对于每个员工,显示其加入公司的天数,不带余数

(1)select ename, (to_date(sysdate) - to_date(hiredate) + 1) from empgj;
(2)select ename, round(sysdate - hiredate, 0) from empgj;

方法(1)的计算可以参考本系列博客--Oracle数据库练习题(2)第21条

45.显示姓名字段的任何位置包含"A"的所有员工的姓名,如果相同位置的按名字排序

select ename from empgj where ename like '%a%' order by ename;

46.显示员工的姓名和受雇日期,根据其服务年限,将最老的员工排在最前面

select ename, hiredatefrom empgjorder by months_between(sysdate, hiredate) / 12 desc;
select ename, hiredate from empgj order by hiredate;

Oracle数据库练习题(1)

Oracle数据库练习题(2)

Oracle数据库练习题(3)相关推荐

  1. Oracle数据库练习题(2)

    一.表展示 二.练习题及答案 11.列出受雇日期早于其直接上级的所有员工的编号,姓名,部门名称 (1)select t.empno, t.empname, d.dnamefrom (select a. ...

  2. Oracle数据库练习题(1)

    一.建表 create table empgj(empno number(4,0) primary key,ename varchar2(10), job varchar2(9),mgr number ...

  3. 史上最难oracle数据库练习题(附答案)

    oracle数据库练习题,所有练习数据都来自于安装oracle数据库后,自带的那几张表,EMP,DEPT等. 部分题目答案已给出,若有异议可以私聊一起探讨. 第一题: 统计薪资大于  薪资最高的员工所 ...

  4. ORACLE数据库练习题整理(2)

    阅读目录 1. 2. 3. 4. 5. 6. 7. 8.MySql 9. 1. Oracle数据库的服务: OracleServiceOrcl/OracleServicesid:数据库实例服务,是数据 ...

  5. Oracle数据库练习题及答案大全(包含数据库脚本)

    目录 删表语句 建表语句 插入数据 练习题及答案 整理不易,请仔细阅读,希望对你有帮助 可自行复制粘贴,仅供参考,如有问题请及时私信或评论,我会一一回复 删表语句 drop TABLE STUDENT ...

  6. Oracle数据库练习题

    题目:设计以下表,完成相关问题SQL编写. 学生表 student (sno,sname,sage,ssex) 课程表 course (cno,cname,tno) 成绩表 sc (sno,cno,g ...

  7. oracle数据库经典练习题及答案

    最近下载了一套oracle数据库习题(无答案),本人自己在oracle上练习得到的答案,如果不对的地方,请不要见怪.保存到博客方便自己以后查阅. 相关表: /*学生表*/ create table s ...

  8. oracle数据库课后习题答案,oracle数据库经典练习题及答案

    最近下载了一套oracle数据库习题(无答案),本人自己在oracle上练习得到的答案,如果不对的地方,请不要见怪.保存到博客方便自己以后查阅. 相关表: /*学生表*/ create table s ...

  9. oracle数据库的练习题,《Oracle数据库应用》练习题及答案

    <<Oracle数据库应用>练习题及答案>由会员分享,可在线阅读,更多相关<<Oracle数据库应用>练习题及答案(10页珍藏版)>请在人人文库网上搜索 ...

  10. oracle数据库应用与开发习题,《Oracle数据库应用》练习题及答案.docx

    <Oracle数据库应用> 选择题在Windows操作系统中,Oracle的____服务监听并接受来自客户端应用程序的连接请求.A.OracleHOME_NAMETNSListenerB. ...

最新文章

  1. Java 对象和类 的理解
  2. 全球项目多区域数据同步问题解决方案
  3. Java Bootstrap:Dropwizard与Spring Boot
  4. matlab 信号处理 教程,MATLAB信号处理仿真 实验_教程-学习文件.pdf
  5. 常用时间序列分析方法
  6. 信息学奥赛C++语言:猴子选大王
  7. C++中的floor()函数
  8. 使用idea开发vue初始步骤
  9. N01web网页设计实例作大作业(div+css) ——中国茶文化(6页) 茶文化网页制作作业_中国化(网页设计...
  10. 阿尔茨海默病与正常衰老中的脑萎缩研究进展
  11. OpenSSH: 通过 LDAP 做认证
  12. 《奇葩说》撞题郭敬明,面对“死亡”,AI竟然赚足眼泪和流量?
  13. 抖音巨量引擎1 创建广告计划
  14. 球差透射电镜测试样品的优势有哪些?
  15. Delphi处理高速文件上传下载的代码及思路
  16. 在U盘安装Windows系统,Mac电脑期待已久的工具WTG
  17. 计算机毕业设计SSM大学生创新创业项目活动管理平台【附源码数据库】
  18. 谈一谈HTML中table、tr、td标签的width和height
  19. 利用Matlab做二维图形和三维图形
  20. SpringBoot+mybatis+Vue实现前后端分离小项目

热门文章

  1. 网站微信扫码登录回调不跳转问题
  2. PPT宏编程——ChineseCounter
  3. SeaweedFS基本介绍
  4. seaweedfs使用说明
  5. mybatis日志在线生成sql(日志参数填充,sql日志格式化)
  6. 浏览器清除缓存快捷键
  7. 人脸识别 (4) 人脸对齐
  8. win10更改无线网卡的MAC地址
  9. USB2.0接口管脚定义
  10. 主机ping虚拟机ip请求超时解决办法