MySQL查询-加,算和除一查询

时间:2019-10-05 06:28:27

标签: mysql sql

我有一个表,该表的列“ 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%”的结果?

2 个答案:

答案 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。

Demo on dbfiddle

答案 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