当前位置: 代码迷 >> Sql Server >> 十分糟糕的语句SQL
  详细解决方案

十分糟糕的语句SQL

热度:94   发布时间:2016-04-24 09:05:08.0
非常糟糕的语句SQL
SELECT ID,MyContent,1.0*(SELECT COUNT(*) FROM ExamingPaperSave WHERE Answer <> MyAnswer) / (SELECT COUNT(*) FROM ExamingPaperSave)*100 AS  错误率 FROM ExamingPaperSave GROUP BY ID,MyContent ORDER BY 错误率

每个ID对应一题目,题目在显示出来的时候不能重复显示,显示的结果为下面三个字段

题目ID MyContent 错误率

这个错误率最罗嗦了。要求算出每题的错误率后,按照错误率降序排序,如果单独显示不重复的题目ID MyContent 倒简单,关键是加了个错误率后,得出的结果老是一样,都为48.8,不可能每题的错误率都相同的哦。

求帮助!
------解决思路----------------------
错误率中分子分母都是有count(*)都只会有一个值,一个值除以一个值当然就只有一个值,实际是作为长两列出现了,楼主应该改下分子分母语句中可能需要加group by
------解决思路----------------------

SELECT ID,MyContent,1.0*(SELECT COUNT(*) FROM ExamingPaperSave WHERE Answer <> MyAnswer and id=a.id) 
/ (SELECT COUNT(*) FROM ExamingPaperSave where id=a.id)*100 AS  错误率 
FROM ExamingPaperSave a GROUP BY a.ID,a.MyContent ORDER BY 错误率


楼主的语句算的是总的错率,每行当然一样了。
------解决思路----------------------
错误率的计算有问题,都是全部计算当然是一样的,你要价格题目ID作为条件来计算啊
  相关解决方案