提问者:小点点

如何使用PHP从MYSQL数据库中计算百分比?


我有一个名为feedbacks的表,如下所示:

id    user    type
1    JOhnT  Positive
2    JOhnT  Negative
3    Sarah  Positive
4    JOhnT  Positive
5    JOhnT  Neutral
....................

我需要获得使用PHP的每个用户的反馈的百分比

我试过这样的事,但我知道这是错误的:

$sql = "SELECT type, count(*), 
concat(round(( count(*)/(SELECT count(*) FROM feedbacks WHERE user='JOhnT' AND type='POSITIVE') * 100 ),2),'%') AS percentage 
FROM feedback 
WHERE user='$email' AND type='positive' GROUP BY type";
$query = mysqli_query($db_conx, $sqlJ);

echo $sql;

谁能建议一下如何实现这一点?

编辑:

根据这些评论,我到目前为止所得到的是:

$sql = "SELECT * FROM feedbacks WHERE user='JOhnT' AND type='POSITIVE'";

$query = mysqli_query($db_conx, $sql) or die(mysqli_error($db_conx));

$productCount = mysqli_num_rows($query);

if ($productCount > 0) {
while($row = mysqli_fetch_array($query, MYSQLI_ASSOC)){

 ///do I need to calculate the percentage here?//
//if so, how?////


}
}   

共1个答案

匿名用户

你可以做一个条件平均值。 在MySQL中,您可以将其表述为:

select user, avg(type = 'Positive') positive_ratio
from feedback
group by user

这将为每个用户提供一个介于01之间的值,该值表示正类型的比率。 如果需要百分比,可以将其乘以100

如果需要单个用户的此信息,可以使用where子句进行筛选(并且不需要group by):

select user, avg(type = 'Positive') positive_ratio
from feedback
where user = 'JOhnT'

附带说明:user是一个MySQL关键字,因此不是一个很好的列名选择。