Mysql SQL-通过差分方法缩小术语
我有一个试图访问的SQL数据库,如果每个条目的最大值和最小值之间的差值超过某个阈值,我需要的是所有术语的平均值 因此,为了利益起见,我们有以下几点:Mysql SQL-通过差分方法缩小术语,mysql,sql,sql-query-store,Mysql,Sql,Sql Query Store,我有一个试图访问的SQL数据库,如果每个条目的最大值和最小值之间的差值超过某个阈值,我需要的是所有术语的平均值 因此,为了利益起见,我们有以下几点: +------------+------+---------+ | Date | Name | Number | +------------+------+---------+ | 2017-01-03 | Dude | 1000000 | | 2017-01-03 | Dude | 2000000 | | 201
+------------+------+---------+
| 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
s置于差异不符合条件的位置
如果要筛选出行,请使用having
:
select date, name, avg(num) as avgnum
from t
group by date, name
having max(num) - min(num) > @X
大概是这样的:
select date, name,
(case when max(num) - min(num) > @X then avg(num) end) as avgnum
from t
group by date, name;
这会将NULL
s置于差异不符合条件的位置
如果要筛选出行,请使用having
:
select date, name, avg(num) as avgnum
from t
group by date, name
having max(num) - min(num) > @X
有点像:
SELECT table.Date,
table.Name,
AVG(table.number)
FROM table
WHERE table.Date = '2017-01-03'
GROUP BY table.Date,
table.Name
HAVING MAX(table.Number) - MIN(table.Number) < X
AND MAX(table.Number) - MIN(table.Number) > X
选择表格日期,
表.名称,
平均值(表号)
从桌子上
其中表日期='2017-01-03'
按表分组。日期,
表.名称
最大(表号)-最小(表号)X
请注意,只有符合having条件的数字才会用于平均值计算
通过“have”,您可以在GROUP BY中使用聚合函数。类似于:
SELECT table.Date,
table.Name,
AVG(table.number)
FROM table
WHERE table.Date = '2017-01-03'
GROUP BY table.Date,
table.Name
HAVING MAX(table.Number) - MIN(table.Number) < X
AND MAX(table.Number) - MIN(table.Number) > X
选择表格日期,
表.名称,
平均值(表号)
从桌子上
其中表日期='2017-01-03'
按表分组。日期,
表.名称
最大(表号)-最小(表号)X
请注意,只有符合having条件的数字才会用于平均值计算
通过“have”,您可以在GROUP BY中使用聚合函数。当差值不超过X时会发生什么?当差值不超过X时会发生什么?