gpt4 book ai didi

mysql - 如何在mysql中选择记录数与具有相同字段值的记录数之间的比率?

转载 作者:行者123 更新时间:2023-12-01 00:35:25 25 4
gpt4 key购买 nike

假设我在 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

最佳答案

当您使用 SELECT 作为值时,它必须只返回一行,您不能返回所有分组的行。您可以使用对多项内容求和的单个查询来完成此操作。

SELECT idWord, SUM(isCorrect = 1) / COUNT(*) AS ratio
FROM `wordstyped`
GROUP BY idWord

isCorrect = 1 这样的比较表达式在为真时计算为 1,在为假时计算为 0,因此将它们相加计算行数条件为真。

您还可以使用 AVG() 函数,因为平均值只是总数除以计数。

SELECT idWord, AVG(isCorrect = 1) AS ratio
FROM `wordstyped`
GROUP BY idWord

关于mysql - 如何在mysql中选择记录数与具有相同字段值的记录数之间的比率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52787426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com