第一部分 导入数据库Mysql 数据中;
第一步:将以上数据库存在本地,注意目录不要有中文;本次是存在虚拟机 /opt/module/software/bjpowernode.sql
第二步:在mysql数据库新建对应的数据库,并通过source本地上传到mysql数据库中并检查是否上传成功;
第二部分 答题;
34道题目
1、取得每个部门最高薪水的人员名称
2、哪些人的薪水在部门的平均薪水之上
3、取得部门中(所有人的)平均的薪水等级,如下:
4、不准用组函数(Max),取得最高薪水(给出两种解决方案)(还差一种)
5、取得平均薪水最高的部门的部门编号(至少给出两种解决方案)
第一步 部门的平均薪水
6、取得平均薪水最高的部门的部门名称
7、求平均薪水的等级最低的部门的部门名称
8、取得比普通员工(员工代码没有在 mgr 字段上出现的)的最高薪水还要高的
领导人姓名
9、取得薪水最高的前五名员工
10、取得薪水最高的第六到第十名员工
11、取得最后入职的 5 名员工
12、取得每个薪水等级有多少员工
13、面试题
有 3 个表 S(学生表),C(课程表),SC(学生选课表)
S(SNO,SNAME)代表(学号,姓名)
95 / 103
C(CNO,CNAME,CTEACHER)代表(课号,课名,教师)
SC(SNO,CNO,SCGRADE)代表(学号,课号,成绩)
问题:
1,找出没选过“黎明”老师的所有学生姓名。
2,列出 2 门以上(含 2 门)不及格学生姓名及平均成绩。
3,即学过 1 号课程又学过 2 号课所有学生的姓名。
请用标准 SQL 语言写出答案,方言也行(请说明是使用什么方言)。
-----------------------------------------------------------------------------
CREATE TABLE SC
(
SNO VARCHAR(200),
CNO VARCHAR(200),
SCGRADE VARCHAR(200)
);
CREATE TABLE S
(
SNO VARCHAR(200 ),
SNAME VARCHAR(200)
);
CREATE TABLE C
(
CNO VARCHAR(200),
CNAME VARCHAR(200),
CTEACHER VARCHAR(200)
);
INSERT INTO C ( CNO, CNAME, CTEACHER ) VALUES ( '1', '语文', '张');
INSERT INTO C ( CNO, CNAME, CTEACHER ) VALUES ( '2', '政治', '王');
INSERT INTO C ( CNO, CNAME, CTEACHER ) VALUES ( '3', '英语', '李');
INSERT INTO C ( CNO, CNAME, CTEACHER ) VALUES ( '4', '数学', '赵');
INSERT INTO C ( CNO, CNAME, CTEACHER ) VALUES ( '5', '物理', '黎明');
commit;
INSERT INTO S ( SNO, SNAME ) VALUES ( '1', '学生 1');
INSERT INTO S ( SNO, SNAME ) VALUES ( '2', '学生 2');
INSERT INTO S ( SNO, SNAME ) VALUES ( '3', '学生 3');
INSERT INTO S ( SNO, SNAME ) VALUES ( '4', '学生 4');
commit;
INSERT INTO SC ( SNO, CNO, SCGRADE ) VALUES ( '1', '1', '40');
INSERT INTO SC ( SNO, CNO, SCGRADE ) VALUES ( '1', '2', '30');
INSERT INTO SC ( SNO, CNO, SCGRADE ) VALUES ( '1', '3', '20');
INSERT INTO SC ( SNO, CNO, SCGRADE ) VALUES ( '1', '4', '80');
96 / 103
INSERT INTO SC ( SNO, CNO, SCGRADE ) VALUES ( '1', '5', '60');
INSERT INTO SC ( SNO, CNO, SCGRADE ) VALUES ( '2', '1', '60');
INSERT INTO SC ( SNO, CNO, SCGRADE ) VALUES ( '2', '2', '60');
INSERT INTO SC ( SNO, CNO, SCGRADE ) VALUES ( '2', '3', '60');
INSERT INTO SC ( SNO, CNO, SCGRADE ) VALUES ( '2', '4', '60');
INSERT INTO SC ( SNO, CNO, SCGRADE ) VALUES ( '2', '5', '40');
INSERT INTO SC ( SNO, CNO, SCGRADE ) VALUES ( '3', '1', '60');
INSERT INTO SC ( SNO, CNO, SCGRADE ) VALUES ( '3', '3', '80');
commit;
14、列出所有员工及领导的姓名
15、列出受雇日期早于其直接上级的所有员工的编号,姓名,部门名称
16、列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门.
17、列出至少有 5 个员工的所有部门
18、列出薪金比"SMITH"多的所有员工信息.
19、列出所有"CLERK"(办事员)的姓名及其部门名称,部门的人数.
20、列出最低薪金大于 1500 的各种工作及从事此工作的全部雇员人数.
21列出在部门"SALES"<销售部>工作的员工的姓名,假定不知道销售部的部
门编号.
22、列出薪金高于公司平均薪金的所有员工,所在部门,上级领导,雇员的工资等
级.
23、列出与"SCOTT"从事相同工作的所有员工及部门名称.
24、列出薪金等于部门 30 中员工的薪金的其他员工的姓名和薪金.
25、列出薪金高于在部门 30 工作的所有员工的薪金的员工姓名和薪金.部门名
称.
26、列出在每个部门工作的员工数量,平均工资和平均服务期限.
27、列出所有员工的姓名、部门名称和工资。
28、列出所有部门的详细信息和人数
29、列出各种工作的最低工资及从事此工作的雇员姓名
30、列出各个部门的 MANAGER(领导)的最低薪金
31、列出所有员工的年工资,按年薪从低到高排序
32、求出员工领导的薪水超过 3000 的员工名称与领导名称
33、求出部门名称中,带'S'字符的部门员工的工资合计、部门人数.34、给任职日期超过 30 年的员工加薪 10%
解题过程
解题过程
1、取得每个部门最高薪水的人员名称
2、哪些人的薪水在部门的平均薪水之上
3、取得部门中(所有人的)平均的薪水等级
平均的薪水等级:先计算每一个薪水的等级,然后找出薪水等级的平均值。
平均薪水的等级:先计算平均薪水,然后找出每个平均薪水的等级值。
第二种方案:select max(sal) from emp;第三种方案:表的自连接
5、取得平均薪水最高的部门的部门编号
第一种方案:降序取第一个。
第二种方案:max
6、取得平均薪水最高的部门的部门名称
7、求平均薪水的等级最低的部门的部门名称
平均薪水是800
平均薪水是900
那么他俩都是1级别。
抛开之前的,最低等级你怎么着?
平均薪水最低的对应的等级一定是最低的.
8、取得比普通员工(员工代码没有在 mgr 字段上出现的) 的最高薪水还要高的领导人姓名
比“普通员工的最高薪水”还要高的一定是领导!
没毛病!!!!
9、取得薪水最高的前五名员工
10、取得薪水最高的第六到第十名员工
11、取得最后入职的 5 名员工
日期也可以降序,升序。
12、取得每个薪水等级有多少员工
分组count
13、面试题:
有 3 个表 S(学生表),C(课程表),SC(学生选课表)
S(SNO,SNAME)代表(学号,姓名)
C(CNO,CNAME,CTEACHER)代表(课号,课名,教师)
SC(SNO,CNO,SCGRADE)代表(学号,课号,成绩)
问题:
1,找出没选过“黎明”老师的所有学生姓名。
2,列出 2 门以上(含2 门)不及格学生姓名及平均成绩。
3,即学过 1 号课程又学过 2 号课所有学生的姓名。
14、列出所有员工及领导的姓名
15、列出受雇日期早于其直接上级的所有员工的编号,姓名,部门名称
emp a 员工表
emp b 领导表
16、 列出部门名称和这些部门的员工信息, 同时列出那些没有员工的部门
17、列出至少有 5 个员工的所有部门
按照部门编号分组,计数,筛选出 >= 5
18、列出薪金比"SMITH" 多的所有员工信息
19、 列出所有"CLERK"( 办事员) 的姓名及其部门名称, 部门的人数
20、列出最低薪金大于 1500 的各种工作及从事此工作的全部雇员人数
按照工作岗位分组求最小值。
21、列出在部门"SALES"< 销售部> 工作的员工的姓名, 假定不知道销售部的部门编号.
22、列出薪金高于公司平均薪金的所有员工, 所在部门, 上级领导, 雇员的工资等级.
23、 列出与"SCOTT" 从事相同工作的所有员工及部门名称
24、列出薪金等于部门 30 中员工的薪金的其他员工的姓名和薪金.
25、列出薪金高于在部门 30 工作的所有员工的薪金的员工姓名和薪金. 部门名称
26、列出在每个部门工作的员工数量, 平均工资和平均服务期限
没有员工的部门,部门人数是0
在mysql当中怎么计算两个日期的“年差”,差了多少年?
TimeStampDiff(间隔类型, 前一个日期, 后一个日期)
timestampdiff(YEAR, hiredate, now())
间隔类型:
SECOND 秒,
MINUTE 分钟,
HOUR 小时,
DAY 天,
WEEK 星期
MONTH 月,
QUARTER 季度,
YEAR 年27、 列出所有员工的姓名、部门名称和工资。
28、列出所有部门的详细信息和人数
29、列出各种工作的最低工资及从事此工作的雇员姓名
30、列出各个部门的 MANAGER( 领导) 的最低薪金
31、列出所有员工的 年工资, 按 年薪从低到高排序
32、求出员工领导的薪水超过3000的员工名称与领导
33、求出部门名称中, 带'S'字符的部门员工的工资合计、部门人数
34、给任职日期超过 30 年的员工加薪 10%.