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 子查询计算到最大值的主要内容,如果未能解决你的问题,请参考以下文章

SQL语句汇总(三)——聚合函数分组子查询及组合查询 - Darly

从子查询 SQL 中选择最大数据,但它显示来自子查询的所有结果

SQL:当一列有最大/计数子查询时,我可以编写多列查询吗?

T-SQL 查询获取子元素的最大值

哪个是解决子组中最大值的最佳标准 sql 查询

sql子查询和连接查询的区别是啥呢?