gpt4 book ai didi

mysql - 值与平均值之间的差异(值)

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

我想知道是否可以像下面这样进行查询。

我有一个包含idvalue 的表。示例:

 table EXAMPLE
|id | value |
| 1 | 65|
| 2 | 13|
| 3 | 22|

我想要的是查询返回这样的集合:

|id        |  value     | average | difference|   
| 2 | 13| 33.3| 20.3|
| 3 | 22| 33.3| 11.3|

问题是如何处理不同的列?

还有一个问题: 如何在集合中仅包含小于或大于平均值的值,

SELECT id,
value,
(SELECT AVG(value) FROM EXAMPLE ) as average
having
value < average.

我使用 having 而不是 where 的原因是 where 在 select 之前执行,因此我不能在其中使用平均值(平均值在查询执行的选择阶段计算)。

我还怀疑我不仅计算了一次 AVG(value),而且计算了表中的每一行。我对吗 ?如果我是,那就太糟糕了,这肯定不是我想要的。

请为我提供一些关于子查询的 MySQL 执行顺序的信息,或者分享这个主题的一些链接。先感谢您。

最佳答案

您必须单独计算总体平均值并强制进行交叉连接:

SQL Fiddle

select
id,
value,
avgValue,
avgValue - value as Diff
from
table1
cross join
(
select
avg(value) as AvgValue
from
table1
) t2
where
value < avgValue

关于mysql - 值与平均值之间的差异(值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20246169/

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