select 
pow(sns_examdetail.SCORE-avg(sns_examdetail.SCORE),2) as score_pow ,
sum(pow(sns_examdetail.SCORE-avg(sns_examdetail.SCORE),2)) as sum_pow 
from
sns_examdetail,sns_exam,ctb_papers,ctb_subject
where
sns_examdetail.EXAM_ID = sns_exam.EXAM_ID
and
sns_exam.PAPER_ID = ctb_papers.PAPER_ID
and
sns_examdetail.SUBJECT_ID = ctb_subject.SUBJECT_ID
and
ctb_subject.SUBJECT_ID = ctb_papers.SUBJECT_ID
and
sns_examdetail.PROBLEM_ID is null
and
sns_examdetail.STATUS <> 0
and
sns_exam.EXAM_NAME = 'XXXXXXXXX'
and
sns_exam.AREA_ID = '50'
group by subject_name
为什么select中的前半句话可以取得结果,而后半句话就说Invalid use of group function?郁闷的要死

解决方案 »

  1.   

    必须用聚合函数
    max(pow(sns_examdetail.SCORE-avg(sns_examdetail.SCORE),2)) as score_pow
      

  2.   

    必须用聚合函数
    max(pow(sns_examdetail.SCORE-avg(sns_examdetail.SCORE),2)) as score_pow
      

  3.   

    sum(pow(sns_examdetail.SCORE-avg(sns_examdetail.SCORE),2)) as sum_pow  
    这句语法不对,对已经AVG了,怎么再对它进行SUM?同样去MAX也是错误的。
      

  4.   

    另外如果你是求标准差,你可以直接使用 STD() 函数select  subject_name,STD(SCORE)  from ,... group by subject_name