gpt4 book ai didi

MySQL AVG ... LIMIT 返回总 AVG

转载 作者:行者123 更新时间:2023-11-29 01:26:12 27 4
gpt4 key购买 nike

表格:

a | b
1 | 15
2 | 10
3 | 20
4 | 30

查询:

SELECT AVG(table.b) FROM table ORDER BY table.a ASC LIMIT 3

将返回 18.75 而不是预期的 15。

如何更改查询以获得预期结果(有限行的 AVG 值)?

最佳答案

你需要使用子查询:

SELECT AVG(b) 
FROM (SELECT b
FROM table
ORDER BY table.a ASC
LIMIT 3) sub

编辑:

没有子查询的执行顺序是这样的:

  1. 来自
  2. AVG(AVG 是使用所有值计算得出的)
  3. ORDER BY(但只有一个值)
  4. LIMIT(一个值上的 LIMIT 3 什么都不做)

子查询的执行顺序如下:

  1. 来自
  2. 订购方式
  3. LIMIT(只有 3 个值)
  4. 外部查询 AVG(仅使用 3 个值计算平均值)

更多信息:Logical query processing (TOP/OFFSET FETCH 与 LIMIT 相同)。

关于MySQL AVG ... LIMIT 返回总 AVG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49035280/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com