[英]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.