请教:下有两张表,以下为表结构create table dep(
depid int identity primary key, --部门号
depname varchar(20)   -- 部门名称
)create table emp(
empid int identity primary key,      --员工号
empname varchar(20),        --员工姓名
salary money,         --工资
depid int          --部门号
)1、请用一条sql语句查询出各部门的平均工资。结果显示为如下形式:   部门号       平均工资
  --------------------------
     1         2500.4521
     2         2845.01212、请列出工资大于本部门平均工资的员工姓名和部门号以及统计此部门的人数。结果显示为如下形式:    EMPNAME     DEPID    部门人数
  ---------------------------------   
     ZHANGSAN     1        15
     LISI         2        10

解决方案 »

  1.   

    1.
    select depid 部门号, avg(salary) 平均工资
    from emp
    group by depid
      

  2.   

    1、
    select t1.depid, avg(t2.salary)
    from dep t1
    inner join dbo.emp t2 on t1.depid=t2.depid
    group by t1.depid
      

  3.   

    1.select depid,avg(money) from emp group by depid ;
      

  4.   

    ---1、
    select 部门号=depid,平均工资=avg(salary) from emp group by depidselect 部门号=a.depname,平均工资=avg(b.salary) 
    from dep a inner join emp b on a.depid=b.depid
    group by depid---2、select empname,depid,部门人数=count(1)
    from emp a inner join (select depid,salary=avg(salary) from emp group by depid) b on a.depid=b.depid and a.salary>b.salary
      

  5.   

    1
    select a.depid,isnull(b.[avg],0) from dep a left join (select depid,[avg]=avg(salary) from emp group by depid) b on a.depid=b.depid
    2
    select empname,depid,count(empid) from emp where  salary>avg(salary)group by empname
      

  6.   

    2、
    SELECT T1.empname,T1.depid,T2.PersonNum
    FROM dbo.emp T1
    INNER JOIN 
    (select t1.depid, avg(t2.salary) AS salary, COUNT(empid) AS PersonNum
    from dep t1
    inner join dbo.emp t2 on t1.depid=t2.depid
    group by t1.depid) T2 ON T1.depid=T2.depid
    WHERE T1.salary>T2.salary
      

  7.   

    1.select depid 部门号,avg(salary)平均工资 from emp group by depid
    2.select empname,emp.depid,s 部门人数 from emp Inner Join (select depid,avg(salary) a,count(1) s from emp group by depid) b on emp.depid=b.depid and salary>a
      

  8.   

    2。
    select emp.empname,emp.DEPID,c.d 
    from (select avg(salary) as a from emp group by depid) as b,Emp ,
    (select count(*) as d from emp group by depid) as c
    where emp.salary>b.a group by depid,empname,c.d
      

  9.   

    Top  
     chuifengde(树上的鸟儿) ( ) 信誉:100  2007-08-01 16:49:19  得分: 0  
     
     
       1.select depid 部门号,avg(salary)平均工资 from emp group by depid
    2.select empname,emp.depid,s 部门人数 from emp Inner Join (select depid,avg(salary) a,count(1) s from emp group by depid) b on emp.depid=b.depid and salary>a
     
     
    是最简单的了。
      

  10.   

    谢谢大家的帮忙,有很多经典的语句。
    chuifengde(树上的鸟儿):能解释一下 
    select empname,emp.depid,s 部门人数 from emp Inner Join (select depid,avg(salary) a,count(1) s from emp group by depid) b on emp.depid=b.depid and salary>a
    这一句吗?里面的s 部门人数和count(1) s代表什么?是不是声明一个变量s,然后把count(1)的值赋给它?count(1)的结果是指什么?刚试了一下这里面可以是任意数字啊。