2015-10-13 105 views
0

我有多个子查询,我试图返回百分比(最大100),然后在最后创建一个总平均值。我遇到的问题是每个子查询返回最多100个。例如查询...SQL子查询计算为最大值

, (( 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?

+1

别t tag产品没有涉及......你真的在这里使用MySQL和MS SQL Server吗? – jarlh

回答

1

使用像

SELECT SUM(IF(eo.value > 550, 1, (eo.value)/550)) * 100 AS percent 

因此,如果eo.value> 550,它将返回1.所以最终的比例不会超过100

+0

完美的作品完全如我所愿 – Key

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 
    ) + 
+0

这不过是一条评论。 –

+0

也许案例表达会更好? – jarlh