【问题标题】:Multiple AVG in single SQL query单个 SQL 查询中的多个 AVG
【发布时间】:2025-11-30 18:45:01
【问题描述】:

我搜索了添加多个 AVG 计算并找到了一些条目,但是我不得不加入另一个表,而且这样的例子很少。

我能找到的最接近的答案是this 但它处理日期并且没有连接

这是我的桌子:

指标:

StandardScore             IndicatorID      NID    DID
0.033333                  7                1      1
0.907723                  9                1      1
0.574739                  26               1      1
0.917391                  21               1      1
.....

索引指标:

IndexID                   IndicatorID
1                         7
1                         26
2                         21
3                         7
4                         9
4                         21
4                         7
5                         9
.......

我的目标是获取与 NID/DID(指标)组合相关的每个 IndexID(索引指标)的平均值

检索单个值的查询将是

SELECT AVG(StandardScore) FROM `indicators` INNER JOIN indexindicators ON indicators.IndicatorId=indexindicators.IndicatorId WHERE nid=1 AND did=1 AND indexindicators.IndexId=1

最终将有 6 个(indexID)平均值,然后必须将其四舍五入,然后 * 乘以 100(我应该使用 PHP 做这部分吗?)

这似乎是一个如此简单的查询,但我似乎无法完全理解它。

提前感谢您的帮助!

【问题讨论】:

  • 是 indexindicators.IndexId 必须与 nid 相同的值吗?
  • 没有。 indexid 的范围是 1-6 , nid 是 1-40 并且做了 1-10

标签: sql average multiple-conditions


【解决方案1】:
SELECT nid, did, indexid, 100.0 * AVG(StandardScore) 
    FROM 'indicators'
    INNER JOIN 'indexindicators'
      ON indicators.IndicatorId=indexindicators.IndicatorId 
group by nid, did, indexid

【讨论】:

  • 非常感谢!像魅力一样工作(MyPHPAdmin 不喜欢 ' 但它成功了。