繁体   English   中英

如何在MySQL中计算百分比

[英]How to Calculate percentage in MySQL

我有一个像这样的数据库

id      q_id     body    user_id  thread
338222  433798  Testing    7178     1
338223  433798  Testing    5571     1
338224  433798  Testing    5571     1

我的查询看起来像这样,

SELECT 
thread, 
user_id, 
COUNT(*) AS contribution FROM answers GROUP BY user_id, thread ORDER BY thread

它将返回线程,user_id和贡献。 但是我想得到贡献的百分比。 假设user_id 7178为线程1贡献了1次,线程1有3行,因此百分比为33.33%

thread  user_id contribution percentage
1       7178         1         33.33
1       5571         2         67.67 

我该怎么办? 有人可以帮我吗?

我认为可以达到目的:

SELECT
  answers.thread,
  answers.user_id,
  COUNT(*) AS contribution,
  COUNT(*) / tmp.TOTAL * 100 AS percentage
FROM answers
  INNER JOIN (
    SELECT
      COUNT(*) AS TOTAL,
      thread
    FROM answers GROUP BY thread
  ) AS tmp ON tmp.thread = answers.thread
GROUP BY user_id, answers.thread;

由于您需要两种不同的聚合(一种用于总贡献量,一种用于每位用户贡献量),因此您需要一个子查询。

请注意,您需要确保表中没有0值。 如果有一些0,则应为除法添加一个保护措施(可能是IF THEN ELSE吗?)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM