有两张表:部门表department  部门编号dept_id  部门名称dept_name
          
          员工表employee    员工编号empid  员工姓名e_name   部门编号dept_id   工资e_wage根据下列题目写出sql:
1、列出工资大于7000的员工所属的部门编号
2、列出员工表中的部门名称(左连接)
3、列出员工少于3人的部门编号
4、列出工资最高的员工姓名
5、求各部门的平均工资
6、求各部门的员工工资总额
7、求每个部门中的最大工资值和最小工资值,并且它的最小值小于5000,最大值大于15000
8、假如现在在库中有一个和员工表结构相同的空表employee2,请用一条sql语句将employee表中的所以记录插入到employee2表中。

解决方案 »

  1.   

    不用说了!应届毕业生找工作吧?这样的问题也来上csdn?怎么像我初学时候的作业哦!
      

  2.   

    哎,我想很快地入手sql不知道如何入手啊
      

  3.   


    Create table #department (dept_id int,dept_name nvarchar(20))
    Create table #employee   (empid   int,e_name    nvarchar(20),dept_id   int,e_wage  money)insert into #department
    select 1,'aaa' union all
    select 2,'bbb'insert into #employee
    select 1,'张三',1,3000 union all
    select 2,'李四',1,10000 union all
    select 3,'王五',2,6000 union all
    select 4,'赵六',2,15000 --1.列出工资大于7000的员工所属的部门编号 
    select dept_name from #employee inner join #department on #employee.dept_id=#department.dept_id
    where e_wage>7000
    group by dept_name
    --2、列出员工表中的部门名称(左连接)
    select e_name,dept_name from #employee left join #department on #employee.dept_id=#department.dept_id
    --3、列出员工少于3人的部门编号 
    select dept_name,Count(#employee.empid) as '人员' from #employee inner join #department on #employee.dept_id=#department.dept_id
    group by dept_name
    HAVING Count(#employee.empid) < 3
    --4、列出工资最高的员工姓名 
    select * from #employee
    where e_wage =(select max(e_wage) from #employee)
    --5、求各部门的平均工资 
    select dept_name,AVG(e_wage) as '平均工资' from #employee inner join #department on #employee.dept_id=#department.dept_id
    Group by dept_name
    --6、求各部门的员工工资总额 
    select dept_name,Sum(e_wage) as '工资总和' from #employee inner join #department on #employee.dept_id=#department.dept_id
    Group by dept_name
    --7、求每个部门中的最大工资值和最小工资值,并且它的最小值小于5000,最大值大于15000 
    select max(e_wage),dept_name from #employee inner join #department on #employee.dept_id=#department.dept_id
    where e_wage>=15000
    group by dept_name
    union all
    select min(e_wage),dept_name from #employee inner join #department on #employee.dept_id=#department.dept_id
    where e_wage<=5000
    group by dept_name
    --8、假如现在在库中有一个和员工表结构相同的空表employee2,请用一条sql语句将employee表中的所以记录插入到employee2表中。 
    insert into employee2 select e_name,dept_id,e_wage from #employee
      

  4.   

    1、列出工资大于7000的员工所属的部门编号
    select dept_id from employee where e_wage>70002、列出员工表中的部门名称(左连接)
    select dept_name from department as d left join employee as e on e.dept_id=d.dept_id 3、列出员工少于3人的部门编号
    select dept_id from employee group by dept_id having count(dept_id)<34、列出工资最高的员工姓名
    select top 1 e_name from employee order by e_wage descending5、求各部门的平均工资
    select dept_id, avg(e_wage) from employee group by dept_id我答了,错了大家不要笑啊
    6、求各部门的员工工资总额
    select dept_id,sum(e_wage) from employee  group by dept_id7、求每个部门中的最大工资值和最小工资值,并且它的最小值小于5000,最大值大于15000
    select dept_id,max(e_wage),min(e_wage) from employee  group by dept_id
     having min(e_wage)<5000 and max(e_wage)>150008、假如现在在库中有一个和员工表结构相同的空表employee2,请用一条sql语句将employee表中的所以记录插入到employee2表中。
    select * from employee
    into employee2