Java笔试题之SQL语句(单表)

题目:系统中有一个表WCEmploy(职工号,姓名,部门名,工种,工资)数据库

一.请写出建表语句spa

1 create table WCEmploy(
2     id int AUTO_INCREMENT PRIMARY KEY,
3     `name` char(8) not null,
4     department_name char(16),
5     type char(8),
6     salary double
7 )

二.插入数据code

1 insert into wcemploy values(null,'张三','车间一','钳工',6000)
2 insert into wcemploy values(null,'李四','车间一','电工',8000)
3 insert into wcemploy values(null,'王五','车间二','车间主任',10000)
1 insert into wcemploy values(null,'泰日天','车间一','钳工',6000),
2 (null,'风高放火','车间一','电工',8000),
3 (null,'沃尔沃','车间二','车间主任',10000),
4 (null,'CVBS','车间二','钳工',2000),
5 (null,'单我的','车间三','钳工',4500),
6 (null,'人头狗','车间二','钳工',6000),
7 (null,'后宫番','车间一','钳工',1500)

多条数据插入blog

 

在插入数据的时候,发生了一个错误,插入汉字数据报错table

修改MySQL的数据库的数据库属性字符集为class

三.查询语句select

1.请用一个SQL语句查询每一个部门的总人数im

select department_name ,COUNT(DISTINCT id) from wcemploy
GROUP BY department_name

 

2.请用一个SQL语句查询出不一样部门的担任“钳工”的职工平均工资d3

select department_name ,AVG(salary) from wcemploy
where type='钳工'
GROUP BY department_name//若是没有分组,就会出现错误

3.请用一个SQL语句查询出不一样部门的担任“钳工”的职工平均工资高于2000的部门数据

 

select department_name ,AVG(salary)as avgsalary from wcemploy
where type='钳工' 
GROUP BY department_name
HAVING AVG(salary)>2000

 

错误写法:

select department_name ,AVG(salary)as avgsalary from wcemploy
where type='钳工'  and AVG(salary)>2000
GROUP BY department_name

4.请用一个SQL语句查询每一个部门低于平均工资的员工信息

 

select * from
wcemploy w ,(select AVG(salary) as davg,department_name//一个W表
from wcemploy
GROUP BY department_name)t//一个t表
where w.department_name = t.department_name and w.salary<davg

1 select w.*,davg from
2 wcemploy w 
3 left join (select AVG(salary) as davg,department_name
4 from wcemploy
5 GROUP BY department_name )t on w.department_name = t.department_name
6 where w.department_name = t.department_name and w.salary<davg

相关文章
相关标签/搜索