题目一:
部门表(员工姓名,部门名称,工资)
department(personnel,name,salary)
等级表(工资等级,等级下限,等级上限)
grade(level,lower,upper)
问题1:
求平均工资大于5000的部门名称和部门的平均工资
注释:主要考察的是having用法,https://www.runoob.com/sql/sql-having.html
having:where无法与聚合函数一起使用,having可以筛选分组后的各组数据(即可以筛选聚合函数的值)
select name, avg(salary) from department group by name having avg(salary) > 5000;
问题2:
求每个员工名称,工资,工资等级
注释:主要考察的是多表连接,https://www.runoob.com/mysql/mysql-join.html
内连接:from A inner join B on A.a = B.a (获取2张表字段匹配关系的记录)
左连接:from A left join B on A.a = B.a (获取左边所有的记录,即使右表没有相匹配的)
右连接:from A right join B on A.a = B.a (获取右边所有的记录,即使左表没有相匹配的)
select a.personnel, a.salary, b.level from department a left join grade b on a.salary >= b.lower and a.salary < = b.upper;
题目二:
stu表(name,subject,score)
小明 数学 91
小明 语文 80
小王 数学 92
小王 语文 92
问题1:
找到所有科目的分数都大于90分的同学,打印出姓名和平均分 (小王,92)
注释:以姓名分组,在分组数据的基础上过滤掉包含小于90分的姓名
主要考察的是having用法,https://www.runoob.com/sql/sql-having.html
having:where无法与聚合函数一起使用,having可以筛选分组后的各组数据(即可以筛选聚合函数的值)
min():返回指定列的最小值
select name, avg(score) from stu group by name having min(score) > 90;