articleID  wen1  wen2  wen3  wen4  wen5  wen6  wen7  wen8  wen9  wen10  defen classID  
      201   10    10    10    10    0     0     0     0     0     0      40     24 
      203   10    10    10    10    10    10    10    10    10    10     100    24 
      200   10    10    0     0     0     0     0     0     0     0      20     23 
      198   10    10    10    10    10    10    10    10    10    10     100    24 表qzq_admindefen字段是wen1到wen10的总和我现在要以classID为分类
把defen字段都相加,
然后在defen字段中去掉一个最高分和最低分的平均值 
sql语句和程序怎么要怎么..思路我清楚,就是不知道怎么写程序...

解决方案 »

  1.   

    select avg(defen) from qzq_admin where defen >min(defen) and defen< max(defen) group by classID ;
    也许是这么写,你可以试试
      

  2.   

    不对.在mysql里运行不出来,无效的群组
      

  3.   

    在表明字段名上加`,例如 `tab`.`name` 试试
      

  4.   

    即便是不报错,也是不对的!
    观察你的示例数据
    defen classID   
    40    24
    100   24
    20    23
    100   241#的 where defen >min(defen) and defen< max(defen) 只能得到全0的结果而实际应得到
    defen classID   
    100   24
    20    23
    想一下再说
      

  5.   

    select (sum(defen)-max(defen)-min(defen))/count(defen) want,classID from qzq_admin group by classID;
    以解决
      

  6.   

    1. 同一classid只有两条记录的也分两种情况,一是两条记录defen一样该如取舍;二是两条记录defen存在大小不一的值,是否需要取舍。2. 同一classid只存在1条记录时的处理逻辑是什么