有三张表
表一老师表t(id,name)
表二学生表c(id,name)
表三关系表r(idt,idc,class),idt表示老师id,idc表示学生id,class分大班与小班
用一条select语句实现!
找出老师的名字,条件是 满足老师教的大班的学生数大于教的小班的学生数

解决方案 »

  1.   

    Select name From
    (
    Select 
    A.name,
    SUM(Case class When '大班' Then 1 Else 0 End) As 大班学生数,
    SUM(Case class When '小班' Then 1 Else 0 End) As 小班学生数
    From
    t
    Inner Join
    r
    On 
    A.id =B.idt
    Group By
    A.name
    ) C
    Where 大班学生数 > 小班学生数
      

  2.   

    select name from t
    where id in
    (
    select idt
    from r
    group by idt
    having sum(case class when '大班' then 1 end)>sum(case class when '小班' then 1 end)
    )
      

  3.   

    Select name From
    (
       Select t.name,
              SUM(Case class When '大班' Then 1 Else 0 End) As 大班学生数,
     SUM(Case class When '小班' Then 1 Else 0 End) As 小班学生数
       from t,r
       where t.id=r.idt
       group by t.name
    )as tmp
    Where 大班学生数 > 小班学生数