怎样找出员工表中每月最后一天受雇的雇员受伤雇主责任

Oracle的sql语句练习题
&&&&&&& -1、选择部门30中的雇员
  select * from emp where deptno=30;
  --2、列出所有办事员的姓名、编号和部门
  select ename,empno,dname from emp e inner join dept d on e.deptno = d.deptno where job=upper('clerk’);
  --3、找出佣金高于薪金的雇员
  select * from emp where comm&
  --4、找出佣金高于薪金60%的雇员
  select * from emp where comm&sal*0.6
  --5、找出部门10中所有经理和部门20中的所有办事员的详细资料
  select * from emp where (deptno=10 and job=upper('manager')) or (deptno=20 and job=upper('clerk '));
  --6、找出部门10中所有经理、部门20中所有办事员,既不是经理又不是办事员但其薪金&=2000的所有雇员的详细资料
  select * from emp where (deptno=10 and job=upper('manager')) or (deptno=20 and job=upper('clerk ')) or (job&&upper(‘manager’) and job&&upper(‘clerk’) and sal&=2000)
  --7、找出收取佣金的雇员的不同工作
  select distinct job from emp where comm&0;
  --8、找出不收取佣金或收取的佣金低于100的雇员
  select * from emp where nvl(comm,0)&100;
  --9、找出各月最后一天受雇的所有雇员
  select * from emp where hiredate= last_day(hiredate);
  --10、找出早于25年之前受雇的雇员
  select * from emp where months_between(sysdate,hiredate)/12&25;
  select * from emp where hiredate
本文已收录于以下专栏:
相关文章推荐
题目来源于http://blog.csdn.net/lifetragedy/article/details/9935699,由于原文题目中的数据在我自己建的DB里没有数据,所以解答中的条件可能是符合我...
最近练习sql语句,先把表结构贴来,这几张应该很常见,记得有一家公司笔试题就有这些表和问题,当时刚出来实习,sql根本不会,直接挂掉了。说多都是心酸史呀!
1.建表的SQL
注:下面的sql语句中...
一、创建表及初始化数据
1、表说明:
emp员工表(empno员工号/ename员工姓名/job工作/mgr上级编号/hiredate受雇日期/sal薪金/comm佣金/deptno部门编号)
1.选择部门30中的所有员工.
2.列出所有办事员(CLERK)的姓名,编号和部门编号.
3.找出佣金高于薪金的员工.
4.找出佣金高于薪金的60%的员工.
5.找出部门10中所有经理(MANAGER...
1.选择部门30中的所有员工.
2.列出所有办事员(CLERK)的姓名,编号和部门编号.
3.找出佣金高于薪金的员工.
4.找出佣金高于薪金的60%的员工.
5.找出部门10中所有经理(MAN...
文接上回。
上回说到随机生成姓氏与名字以后用字符串处理函数将他们连接起来
现在我们名字有了,性别有了,年龄也有了 那么好 就该放去数据库了
放去数据库我做了一下几个步骤
1.在 MS SQl ...
他的最新文章
讲师:汪剑
讲师:刘道宽
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)Mysql5.7常用查询
创建一个员工表
create table employee
empno int,#员工编号(主键,自动增长)
ename varchar(20),#员工姓名(非空)
mgr varchar(4),#上司的员工编号
hiredate date,#雇佣日期(非空)
job varchar(40),#职位(职位可以是&职员&,&办事员&,&销售员&,&总经理&等)
sal decimal(7,2),#薪水
comm decimal(7,2),#佣金
deptno int#所在的部门编号(可以设为:10,20,30 等,外键,引用部门表的部门编号)
创建部门表:
Deptno部门编号
Deptname部门名称
Loc部门所在地
完成以下功能:
1. 查看库中所有表
2. 查看表的创建细节 show c
3. 查看表的结构
4. 使用 insert 语句向表中插入一个员工的信息。
5. 查看插入的数据
6. 使用 insert 语句一次性向表中插入 10 个员工的信息。
7. 给部门表添加 4 条记录,部门编号分别为 10,20,30,40 的部门
8. 将所有员工薪水修改为 5000 元。
9. 将姓名为&aaa&的员工薪水修改为 3000 元。(姓名自定,表中存在的姓名)
10. 将姓名为&aaa&的员工薪水修改为 5000 元,job 改为 ccc
11. 将 aaa 的薪水在原有基础上增加 1000 元。
12. 选择部门 30 中的雇员
13. 列出所有办事员的姓名、编号和部门
14. 找出佣金高于薪金的雇员
15. 找出佣金高于薪金 60%的雇员
16. 找出部门 10 中所有经理和部门 20 中所有办事员的详细资料
17. 找出部门 10 中所有经理、部门 20 中所有办事员以及既不是
18. 经理又不是办事员但其薪金大于或等于 2000 的所有雇员的详细资料
19. 找出收取佣金的雇员的不同工作.
20. 找出不收取佣金或收取的佣金低于 100 的雇员
21. 找出各月最后一天受雇的所有雇员.
22. 找出早于 22 年之前受雇的雇员
23. 显示只有首字母大写的所有雇员的姓名
24. 显示正好为 5 个字符的雇员姓名.
25. 显示不带有&R&的雇员姓名
26. 显示所有雇员的姓名的前三个字符.
27. 显示所有雇员的姓名,用 a 替换所有&A&
28. 显示所有雇员的姓名以及满 10 年服务年限的日期
29. 显示雇员的详细资料,按姓名排序
30. 显示雇员姓名,根据其服务年限,将最老的雇员排在最前面
31. 显示雇员姓名,工作和薪金,按工作类型降序顺序排序,在工作类型内工作按薪金排序
32. 显示所有雇员的姓名和加入公司的年份和月份,按雇员受雇日所在月排序,并将最早年份的记录排在最前面
33. 显示在一个月为 30 天的情况下所有雇员的日薪金,忽略余数
34. 找出在(任何年份的)2 月受雇的所有雇员
35. 对于每个雇员,显示其加入公司的天数
36. 显示姓名字段的任何位置包含&A&的所有雇员的姓名
注意:以下查询会用到分组查询或者连接查询或者子查询
37. 列出至少有一个雇员的所有部门
38. 列出薪金比'SMITH'多的所有雇员.
39. 列出所有雇员的姓名及其上级的姓名.
40. 列出入职日期早于其直接上级的所有雇员.
41. 列出部门名称和这些部门的雇员,同时列出那些没有雇员的部门
42. 列出所有职位为'办事员'的姓名及其部门名称.
43. 列出各种职位的最低薪金
44. 列出从事&SALES&(销售)工作的雇员的姓名,假定不知道销售部的部门编号
45. 列出薪金高于公司平均水平的所有雇员
46. 列出与&SCOTT&从事相同工作的所有雇员
47. 列出某些雇员的姓名和薪金,条件是他们的薪金等于部门 30 中任何一个雇员的薪金
48. 列出某些雇员的姓名和薪金,条件是他们的薪金高于部门 30 中所有雇员的薪金
49. 列出每个部门的信息以及该部门中雇员的数量
50. 列出所有雇员的雇员名称、部门名称和薪金
CREATE TABLE dept(
deptno int NOT NULL PRIMARY KEY,
deptname VARCHAR(30) NOT NULL,
loc VARCHAR(100)
CREATE TABLE employee(
empno int NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '员工编号',
ename VARCHAR(20) NOT NULL COMMENT '员工姓名',
mgr VARCHAR(4) COMMENT '上司的员工编号',
hiredate date NOT NULL COMMENT '雇用日期',
job VARCHAR(40) COMMENT '职位',
sal DECIMAL(7,2),
comm DECIMAL(7,2),
deptno int COMMENT '所在部门编号',
FOREIGN KEY(deptno) REFERENCES dept(deptno)
1、SHOW TABLES;
2、SHOW CREATE
4、INSERT INTO dept VALUES(10,'技术部','北京');
INSERT INTO employee VALUES(9527,'SCOTT',,'','CEO',);
5、SELECT * FROM
6、INSERT INTO dept VALUES
(20,'销售部','北京'),
(30,'人事部','北京');
INSERT INTO employee VALUES
(0,'zhangsan1','9527','','职员',),
(0,'zhangsan2','9522','','办事员',),
(0,'zhangsan3','9522','','办事员',),
(9522,'zhangsan4','9527','','总经理',),
(0,'SMITH','9559','','职员',),
(9559,'zhangsan6','9527','','总经理',),
(0,'zhangsan7','9559','','职员',3000,,30),
(0,'zhangsan8','9527','','经理',5000,,10),
(0,'zhangsan9','9522','','办事员',2000,,20),
(0,'ZhangSanR','9559','','职员',3000,,30);
7、INSERT INTO dept VALUES(40,'管理部','北京');
8、UPDATE employee SET sal=5000;
9、UPDATE employee SET sal=3000 WHERE ename='张三';
10、UPDATE employee SET sal=5000,job='销售员' WHERE ename='张三';
11、UPDATE employee SET sal=sal+1000 WHERE ename='张三';
12、SELECT * FROM employee WHERE deptno=30;
13、SELECT ename 姓名,empno 编号, deptno 部门 FROM employee WHERE job='办事员';
14、SELECT * FROM employee WHERE comm&
15、SELECT * FROM employee WHERE comm&sal*0.6;
16、SELECT * FROM employee WHERE (deptno=10 and job='经理') or (deptno=20 and job='办事员');
17、SELECT * FROM employee WHERE (deptno=10 and job='经理') or (deptno=20 and job='办事员') or (job&&'经理' and job&&'办事员' and sal&=2000);
19、SELECT * FROM employee WHERE comm IS NOT NULL;
20、SELECT * FROM employee WHERE comm IS NULL OR comm&100;
21、SELECT * FROM employee WHERE MONTHNAME(hiredate)&&MONTHNAME(DATE_ADD(hiredate,INTERVAL 1 DAY));
22、SELECT * FROM employee WHERE NOT NOW()BETWEEN hiredate and DATE_ADD(hiredate,INTERVAL 22 YEAR);
23、SELECT ename FROM employee WHERE ASCII(LEFT(ename,1))&=65 and ASCII(LEFT(ename,1))&=90;
24、SELECT * FROM employee WHERE LENGTH(ename)=5;
25、SElECT * FROM employee WHERE ename NOT LIKE '%R%';
26、SElECT LEFT(ename,3) FROM
27、SELECT REPLACE(ename,'a','A') FROM
28、SELECT ename,DATE_ADD(hiredate,INTERVAL 10 YEAR)10年服务年限 FROM
29、SELECT * FROM employee ORDER BY
30、SELECT ename,hiredate FROM employee ORDER BY TIMESTAMPDIFF(DAY,hiredate,NOW()) DESC;
31、SELECT ename,job,sal FROM employee ORDER BY job DESC,
32、SELECT ename,YEAR(hiredate)年份,MONTH(hiredate)月份 FROM employee ORDER BY 年份,月份;
33、SELECT ename,FLOOR(sal/30) 日薪资 FROM
34、SELECT ename FROM employee WHERE MONTH(hiredate)=2;
35、SELECT ename,TIMESTAMPDIFF(DAY,hiredate,NOW()) FROM
36、SELECT ename FROM employee WHERE ename LIKE '%A%';
37、SELECT a.deptno,a.deptname,b.人数 FROM dept a INNER JOIN (SELECT deptno,COUNT(*)人数 FROM employee GROUP BY deptno) b ON a.deptno=b.deptno WHERE b.人数&1;
38、SELECT * FROM employee WHERE sal&(SELECT sal FROM employee WHERE ename='SMITH');
39、SELECT a.empno 员工编号,a.ename 员工姓名,b.ename 上级姓名 FROM employee a LEFT JOIN (SELECT * FROM employee) b ON a.mgr=b.
40、SELECT a.ename 员工姓名,a.hiredate 入职时间,b.hiredate 上级入职时间 FROM employee a INNER JOIN (SELECT * FROM employee) b ON a.mgr=b.empno AND (a.hiredate NOT BETWEEN b.hiredate AND NOW());
41、SELECT * FROM dept a LEFT JOIN employee b ON a.deptno=b.
42、SELECT * FROM dept a INNER JOIN employee b ON a.deptno=b.deptno AND job='办事员';
43、SELECT a.deptname,MIN(b.sal)最低薪资 FROM dept a LEFT JOIN employee b ON a.deptno=b.deptno GROUP BY b.
44、SELECT * FROM dept a INNER JOIN employee b on a.deptno=b.deptno AND a.deptname='销售部';
45、SELECT * FROM employee WHERE sal&(SELECT AVG(sal) FROM employee);
46、SELECT * from employee where job=(select job from employee where ename='SCOTT');
47、SELECT ename,sal FROM employee WHERE sal in (SELECT sal FROM employee WHERE deptno=30);
48、SELECT ename,sal FROM employee WHERE sal&(SELECT MAX(sal) FROM employee WHERE deptno=30);
49、SELECT a.*,b.人数 FROM dept a LEFT JOIN (SELECT deptno,COUNT(*)人数 FROM employee GROUP BY deptno) b ON a.deptno=b.
50、SELECT b.ename,a.deptname,b.sal FROM dept a INNER JOIN employee b ON a.deptno=b.用户名:李兴华
文章数:46
评论数:68
访问量:110999
注册日期:
阅读量:1297
阅读量:3317
阅读量:581820
阅读量:466403
[匿名]51cto游客:
[匿名]刘宝成:
[匿名]对象转型:
51CTO推荐博文
lower函数:&此函数将全部的大写字母都可以变为小写字母&&SELECT lower('ABCDE') FROM&• dual表为一个虚拟表,以后介绍
upper函数:将输入的字符串变为大写字母&&SELECT upper('abcd') FROM
例如:之前查询的时候区分大小写,所以此处如果输入的是小写字母,就可以通过upper函数进行转换。&查询雇员姓名内容为smith的全部员工。&SELECT * FROM emp WHERE ename=UPPER('smith') ;
initcap函数:将每个字符串的首字母大写&例如:要求将雇员表中的全部雇员信息的首字母大写。&&SELECT initcap(lower(ename)) FROM&函数可以进行嵌套。
concat函数:字符串连接,可以连接两个字符串&SELECT concat('hello',' world!!!') FROM&实际上使用“||”也可以完成两个字符串的连接操作。
substr函数:字符串截取&截取的时候需要注意:要从那里开始截取,之后取多长的长度。&SELECT substr('hello',1,2) FROM&注意:substr函数的开始点是从1开始的。
length:取出字符串的长度,例如,取出每一个雇员的姓名的长度:&SELECT ename||' 姓名的长度为:'||length(ename) FROM
instr函数:查找在一个字符串中是否有指定的字符串,如果有,则返回其位置&SELECT instr('hello','x') FROM&• 如果有此字符串,则返回位置,如果没有,则返回0。
replace函数:替换,可以将一个字符串中的指定字符串替换为其他内容:&SELECT replace('hello','l','x') FROM
trim函数:去掉左右空格的函数&SELECT trim('&&&&&&& hello&&&&&&&&& ') FROM
查询:&1、&检索姓名最后一个字母为N的雇员&&• SELECT * FROM emp WHERE substr(ename,-1,1)='N';&2、&检索职务为“SALE”的全部员工信息&&• SELECT * FROM emp WHERE substr(job,1,4)='SALE';
ROUND表示四舍五入&•SELECT ROUND(34.56,-1) FROMTRUNC函数:表示截取函数&• SELECT TRUNC(34.56,-2) FROMMOD函数:取余数&•SELECT MOD(10,3) FROM
取得当前日期:&在Oracle中可以通过查询sysdate取得当前的日期:&&• SELECT sysdate FROM&
例如:计算10部门中的员工进入公司的日期数:&肯定使用当前日期-雇佣日期(hiredate) = 天数,天数/7为日期数。&SELECT ename,round((sysdate-hiredate)/7)
例如:&求出所有员工的受雇月数:months_between,使用当前日期与雇佣日期比较。&• SELECT ename,round(MONTHS_BETWEEN(sysdate,hiredate))
ADD_MONTHS:表示在日期的基础上增加几个月之后的日期:&求出,三个月之后的日期是那一天:&&SELECT ADD_MONTHS(sysdate,3) FROM
NEXT_DAY:表示下一个这天(星期几)&SELECT NEXT_DAY(sysdate,'星期一') FROM
LAST_DAY:求出当前日期所在月的最后一天:&SELECT LAST_DAY(sysdate) FROM
例如:&显示受雇时间不满320-个月的雇员的编号、受雇日期、受雇的月数、满六个月的复审日期、受雇后的第一个星期五以及受雇当月的最后一天求出雇佣月数大于320的雇员信息:&SELECT * FROM emp WHERE MONTHS_BETWEEN(sysdate,hiredate)&320 ;综合:&SELECT empno 雇员编号,hiredate 雇佣日期, &round(MONTHS_BETWEEN(sysdate,hiredate)) 雇佣月数 ,&add_months(hiredate,6) 复审日期,next_day(hiredate,'星期五') 受雇后到第一个星期五,&last_day(hiredate) 最后一天FROM emp WHERE MONTHS_BETWEEN(sysdate,hiredate)&320 ;&
例如:现在要求取出全部员工受雇的年份&实际上要对hiredate中的内容进行分离,取出年份。&&SELECT empno,ename,TO_CHAR(hiredate,'YYYY') FROM&取出雇佣的月份和日:&&SELECT empno,ename,TO_CHAR(hiredate,'YYYY') 年,TO_CHAR(hiredate,'MM') 月,TO_CHAR(hiredate,'DD') 月 FROM
也可以通过此函数把显示的日期的格式进行修正:&年-月-日:&SELECT empno,ename,TO_CHAR(hiredate,'YYYY-MM-DD')& FROM
&正常情况下的日期,如果是月应该是两位,如果现在是2月,则会显示02月,如果现在不希望显示出前导0,则可以加入一个fm&SELECT empno,ename,TO_CHAR(hiredate,'fmYYYY-MM-DD')& FROM
&可以将一个数值按照指定的格式输出。&SELECT empno,sal FROM  此时不是很明确的知道查询出的工资,而且工资的位数也不标准。&使用to_char完成:SELECT empno,to_char(sal,'L99,999') FROM
to_date函数:&可以将一个字符串变为一个日期类型。&&SELECT to_date('','YYYY-MM-DD') FROM
要求:&查询出全部雇员的年薪(基本工资和佣金)。&&SELECT empno,(sal+comm)*12 FROM&如果没有奖金的雇员,则年薪也没了,因为是null值,所以最后的计算结果仍然是null。希望如果最后的值为null,则应该按0进行计算,此时就需要NVL函数的支持。
Nvl函数可以将空值变为一个特定的数值&SELECT empno,sal,NVL(comm,0) FROM使用此函数修改上面的查询:&SELECT empno,(sal+NVL(comm,0))*12 FROM
&&select empno,ename,&希望:&• 如果工作是CLERK:则显示办事员&• 如果工作是SALESMAN:则显示为销售人员&• 如果工作是MANAGER,则显示为经理&SELECT empno,ename,DECODE(job,'CLERK','办事员','SALESMAN','销售人员','MANAGER','经理') FROM
了这篇文章
类别:未分类┆阅读(0)┆评论(0)君,已阅读到文档的结尾了呢~~
Oracle数据库查询练习及答案,oracle数据库练习题,oracle跨数据库查询,oracle查询数据库名,oracle数据库查询语句,oracle查询数据库版本,oracle 查询数据库,oracle数据库编码查询,oracle数据库查询优化,oracle查询数据库时间
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
Oracle数据库查询练习及答案
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口}

我要回帖

更多关于 雇员受伤雇主责任 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信