我有一个名为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?////
}
}
你可以做一个条件平均值。 在MySQL中,您可以将其表述为:
select user, avg(type = 'Positive') positive_ratio
from feedback
group by user
这将为每个用户
提供一个介于0
和1
之间的值,该值表示正类型
的比率。 如果需要百分比,可以将其乘以100
。
如果需要单个用户的此信息,可以使用where
子句进行筛选(并且不需要group by
):
select user, avg(type = 'Positive') positive_ratio
from feedback
where user = 'JOhnT'
附带说明:user
是一个MySQL关键字,因此不是一个很好的列名选择。