假设我在mysql数据库中有一个表
(id,idWord,isCorrect)
------------------
('1','1', '0'),
('2','1', '1'),
('3','1', '1'),
('4','1', '1'),
('5','1', '0'),
('6','1', '1'),
('7','2', '0'),
('8','2', '0'),
('9','2', '1'),
('10','2', '1')
如何选择iscorrect=1的记录数与具有相同idword的记录总数之间的比率?在这种情况下会导致
('1','0.6') (-> 4/6)
('2','0.5') (-> 2/4)
我试过了
SELECT
(SELECT COUNT(`isCorrect`) FROM `wordstyped` GROUP BY `idWord`,`isCorrect`)
/
(SELECT COUNT(`isCorrect`) FROM `wordstyped` GROUP BY `idWord`,`isCorrect` WHERE `isCorrect`=1)
但它不起作用。
http://www.sqlfiddle.com/#!9/f36c58/1型
2条答案
按热度按时间f8rj6qna1#
当你使用
SELECT
作为一个值,它只能返回一行,不能返回所有分组的行。您可以通过一个查询来完成它,该查询对多个内容求和。像这样的比较表达式
isCorrect = 1
计算结果为1
如果是真的,0
如果为false,那么求和将计算条件为true的行数。您也可以使用
AVG()
函数,因为平均值只是总数除以计数。eqoofvh92#
试试这个: