我有多个子查询,我试图以百分比形式返回(最多100个),然后在结束时创建总平均值。我遇到的问题是每个子查询返回最多100个。示例查询是......
, (( SELECT SUM((eo.value) / 550) * 100
FROM users u1
INNER JOIN field_user pu1
ON pu1.field_target = u1.personid
) +
因此,如果eo.value超过550,那么我的结果将大于100.我如何将最大值限制为100?
答案 0 :(得分:1)
使用
SELECT SUM(IF(eo.value > 550, 1, (eo.value) / 550)) * 100 AS percent
所以如果eo.value> 550,它将返回1.因此最终的百分比不会超过100
答案 1 :(得分:0)
使用案例陈述和您的选择。
例如:
, (( SELECT CASE WHEN (SUM((eo.value) / 550) * 100) > 100 THEN 100 ELSE (SUM((eo.value) / 550) * 100) END
FROM users u1
INNER JOIN field_user pu1
ON pu1.field_target = u1.personid
) +