我正在尝试为给出了> 99个答案的用户显示来自数据库的良好答案的平均(百分数),而在“答案”列中:1 =良好答案和-1 =错误答案...

使用SUM的问题是1 + -1 = 0,因此从技术上讲,如果某人有5个好的答案和5个不好的答案,当我应该得到50%时,以下查询给我0%

SELECT
  user_id,
  CONCAT(ROUND( (SUM( `answer` ) / COUNT( `answer` ))*100 ,2 ),'%')  AS totals
FROM myDB
WHERE answer <>0
GROUP BY user_id
HAVING COUNT( `answer` ) >99
ORDER BY totals DESC


我将如何进行这项工作?

最佳答案

试试这个,我现在无法测试。

SELECT
  user_id,
  CONCAT(
    ROUND(
      ( SUM(
        case when `answer`>0 then 1 else 0 end
        ) / COUNT( `answer` )
      ) * 100, 2
    ),'%'
  ) AS totals
FROM myDB
WHERE answer <>0
GROUP BY user_id
HAVING COUNT( `answer` ) >99
ORDER BY totals DESC

关于mysql - 从MySQL中的行数获取平均值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25728550/

10-16 15:39