有一个数据表,格式如下:  班级      姓名    科目  成绩
(1)班    小明    语文    85
(1)班    小明    数学    90
(1)班    小兰    语文    83
(1)班    小兰    数学    95
(1)班    小欢    语文    86
(1)班    小欢    数学    91
(2)班    小花    语文    87
(2)班    小花    数学    89现在要求如下
1. xxxxx忽略2. xxxxx忽略
3. 用sql语句判断(1)班的单科成绩都大于85分的是谁小梁的答案:select 姓名 from tb
where 班级 = '1班'
group by 姓名
having count(case when 成绩 > 85 then 1 end) = count(*);
还有其他方法么?

解决方案 »

  1.   

    路已铺好
    use   master
    go 
    create table tb 
    (
    班级 nvarchar (100)
    ,姓名 nvarchar(100)
    ,科目 nvarchar(100)
    ,成绩 int 
    )
     
    insert tb 
                select '(1)班',    '小明',    '语文',    85 
    union all  select '(1)班',    '小明',    '数学',    90
    union all  select '(1)班',    '小兰',    '语文',    83 
    union all  select '(1)班',    '小兰',    '数学',    95 
    union all  select '(1)班',    '小欢',    '语文',    86 
    union all  select '(1)班',    '小欢',    '数学',    91 
    union all  select '(1)班',    '小花',    '语文',    87 
    union all  select '(1)班',    '小花',    '数学',    89  update tb set 班级=' (2)班' where 姓名='小花'select * from tbselect top 2  班级,姓名,avg(成绩)  from tb 
    where 班级='(1)班'
    group by 班级,姓名
    order by avg(成绩) descselect 姓名 from  tb 
    where  
      

  2.   

    select distinct 姓名 from tb where 班级 = '(1)班' and 姓名 not in (select 姓名 from tb where 班级 = '(1)班' and 成绩 <= 85)
      

  3.   

    create table tb 
    (
    班级 nvarchar (100)
    ,姓名 nvarchar(100)
    ,科目 nvarchar(100)
    ,成绩 int 
    )
     
    insert tb 
                select '(1)班',    '小明',    '语文',    85 
    union all  select '(1)班',    '小明',    '数学',    90
    union all  select '(1)班',    '小兰',    '语文',    83 
    union all  select '(1)班',    '小兰',    '数学',    95 
    union all  select '(1)班',    '小欢',    '语文',    86 
    union all  select '(1)班',    '小欢',    '数学',    91 
    union all  select '(1)班',    '小花',    '语文',    87 
    union all  select '(1)班',    '小花',    '数学',    89  select distinct 姓名 from tb where 班级 = '(1)班' and 姓名 not in (select 姓名 from tb where 班级 = '(1)班' and 成绩 <= 85)/*
    姓名                                                                                                   
    ---------------------------------------------------------------------------------------------------- 
    小花
    小欢(所影响的行数为 2 行)
    */update tb set 班级=' (2)班' where 姓名='小花'select distinct 姓名 from tb where 班级 = '(1)班' and 姓名 not in (select 姓名 from tb where 班级 = '(1)班' and 成绩 <= 85)
    /*姓名                                                                                                   
    ---------------------------------------------------------------------------------------------------- 
    小欢(所影响的行数为 1 行)
    */drop table tb