gpt4 book ai didi

mysql - SQL - 通过差分方法缩小术语范围

转载 作者:行者123 更新时间:2023-11-29 06:48:40 29 4
gpt4 key购买 nike

我有一个正在尝试访问的 SQL 数据库,我需要的是在每个条目的最大值和最小值之间的差异高于特定阈值的情况下所有术语的平均值。

因此,为了利益起见,我们有以下内容:

+------------+------+---------+  
| Date | Name | Number |
+------------+------+---------+
| 2017-01-03 | Dude | 1000000 |
| 2017-01-03 | Dude | 2000000 |
| 2017-01-04 | Dude | 7000000 |
| 2017-01-04 | Dude | 8750000 |
+------------+------+---------+

我现在想要取 2017-01-03 日期的平均值,但前提是当天的最大和最小数字之间的差异高于/低于 X。当然,我的实际表格要大得多,因此删除例如,VBA 中的数据和循环没有帮助。

我理想的输出是:

+------------+------+---------+  
| Date | Name | AVGnum |
+------------+------+---------+
| 2017-01-03 | Dude | X |
| 2017-01-04 | Dude | Y |
+------------+------+---------+

其中 X 和 Y 是数字的平均值,当且仅当当天的最大值和最小值之差高于指定的 X 时。

非常感谢!!!

最佳答案

类似这样的事情:

select date, name,
(case when max(num) - min(num) > @X then avg(num) end) as avgnum
from t
group by date, name;

这会将 NULL 放入差异不满足条件的位置。

如果您想过滤掉行,请使用 having 代替:

select date, name, avg(num) as avgnum
from t
group by date, name
having max(num) - min(num) > @X

关于mysql - SQL - 通过差分方法缩小术语范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48404480/

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