我有一个表,该表的列“ Score”包含一个从1到10的数字。我需要在MySQL中实现以下计算:
Column: Score
Row 1: 10
Row 2: 9
Row 3: 9
Row 4: 7
Row 5: 10
计算:(所有分数的计数> = 8)/(所有分数的计数)
计算:(4)/(5)
结果:0.8
结果百分比:80%
如何在尽可能少的查询中实现这一目标,以获得“ 80%”的结果?
答案 0 :(得分:2)
您可以通过以下查询来做到这一点:
SELECT SUM(Score >= 8) / COUNT(*) AS result,
SUM(Score >= 8) / COUNT(*) * 100 AS resultpercentage
FROM yourtable
它依赖于MySQL在数字上下文中将布尔值视为1或0的事实,因此对于每个Score> = 8,我们将SUM加1。
答案 1 :(得分:2)
这是另一种(也是更短的)方法:
SELECT AVG(score >= 8) AS result FROM mytable
这将以0-1的比例为您提供结果。如果您希望结果在0-100范围内,则:
SELECT AVG(score >= 8) * 100 AS result FROM mytable
您还可以串联添加'%'符号:
SELECT CONCAT(AVG(score >= 8) * 100, '%') AS result FROM mytable