表A 
学号  姓名   科目    分数
no    name   subj   cso怎样找出有三门不及格包括三门的学生?谢谢,写对了就送分.

解决方案 »

  1.   

    select 学号,姓名 from 表A
    group by 学号,姓名
    having count(Case when 分数<60 then 1 else NULL end)>=3
      

  2.   

    表不对
    得改成这样
    table a
    学号 姓名 课程
    table b
    课程 成绩
      

  3.   

    学号,科目 做个唯一索引
    select 学号,姓名 from 表A
    where 学号 in
    (
    select 学号
    group by 学号,科目
     having count(Case when 分数<60 then 1 else NULL end)>=3
    )
      

  4.   

    修改成两个表,然后用sql语句搞定...
      

  5.   

    回复人: dreamover(梦醒了) ( ) 信誉:100 
    select 学号,姓名 from 表A
    group by 学号,姓名
    having count(Case when 分数<60 then 1 else 0 end)>=3梦醒了回答基本是正确的,
    还有这个表结构没有问题,不必拆成两个表.
      

  6.   

    ssson(疾风魔狼) ( ) 信誉:100 表不对
    得改成这样
    table a
    学号 姓名 课程
    table b
    课程 成绩--------------------------------------
    这个绝对不对,课程怎么会对应成绩,应该是学生和课程对应成绩,要拆的话也是三个表表A
    学号,姓名
    表B
    课程编号,课程
    表C
    学号,课程编号,成绩
      

  7.   

    year2000bug(江南) ( ) 信誉:99 学号,科目 做个唯一索引
    select 学号,姓名 from 表A
    where 学号 in
    (
    select 学号
    group by 学号,科目
     having count(Case when 分数<60 then 1 else NULL end)>=3
    )这个不对
    学号和科目已经唯一索引了
    那group by 学号,科目,那不count都是1了么?怎么算三门课?
      

  8.   

    哈哈,我以前没搞过数据库,所以就不知道了咯,好了,应该就是它了:
    select 学号,姓名 from 表A
    group by 学号,姓名
    having count(Case when 分数<60 then 1 else 0 end)>=3结拉。
      

  9.   

    merkey2002(小样的) ( ) 信誉:88 
    select 学号,姓名 from 表A
    group by 学号,姓名
    having count(Case when 分数<60 then 1 else 0 end)>=3我的null你怎么改成0了,改成0的话,count要改成sum
    count统计的时候是忽略null值不忽略0的
      

  10.   

    回复人: dreamover(梦醒了) ( ) 信誉:100 嗯,你说的对
    我弄混了