SQL 子查询计算到最大值

Posted

技术标签:

【中文标题】SQL 子查询计算到最大值【英文标题】:SQL subquery calculating to maximum value 【发布时间】:2015-10-13 09:17:05 【问题描述】:

我有多个子查询,我试图以百分比(最大 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?

【问题讨论】:

不要标记未涉及的产品...您真的在这里同时使用 mysql 和 MS SQL Server 吗? 【参考方案1】:

使用喜欢

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

所以如果 eo.value > 550,它将返回 1。所以最终百分比不会超过 100

【讨论】:

【参考方案2】:

用例语句与您的选择一起使用。

例如:

  , ((  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
    ) +

【讨论】:

那不过是一条评论。 也许用 case 表达会更好?

以上是关于SQL 子查询计算到最大值的主要内容,如果未能解决你的问题,请参考以下文章