如何在整个数据集中查找 column1 值超过平均 column1 值两倍的所有数据行?

Posted

技术标签:

【中文标题】如何在整个数据集中查找 column1 值超过平均 column1 值两倍的所有数据行?【英文标题】:How to find all the data rows with column1 values more than twice the average column1 value across the dataset? 【发布时间】:2021-07-09 01:20:44 【问题描述】:

我正在尝试使用下面的代码查找所有数据行的 column1 值超过数据集中 column1 平均值的两倍,但它似乎不是正确的数据。 代码如下:

select *,column1 over() from databasetest.Table1
where column1 > (select 2*avg(column1) from databasetest.Table1)

这是示例输出

如您所见,column1 的值仍然小于整个数据集的 column1 平均值的两倍。我认为这应该检索超过数据集中平均 column1 值两倍以上的列。 我做错了什么还是我误解了什么? 任何帮助将不胜感激

【问题讨论】:

根据问题指南,请不要发布代码、数据、错误消息等的图像 - 将文本复制或输入到问题中。请保留将图像用于图表或演示渲染错误,无法通过文本准确描述的事情。 【参考方案1】:

如果我理解正确,你可以使用窗口函数:

select *
from (select t1.*, avg(column1) over () as avg_column1
      from databasetest.Table1 t1
     ) t1
where t1.column1 > 2 * avg_column1;

【讨论】:

感谢您宝贵的时间,您知道为什么我的代码不起作用吗? @lili 。 . .您的代码在语法上不正确。

以上是关于如何在整个数据集中查找 column1 值超过平均 column1 值两倍的所有数据行?的主要内容,如果未能解决你的问题,请参考以下文章

为数据集中存在的所有不同column2值填写缺少的column1值

sas如何计算相邻观测的差值

如何从 cvs 连续数据集中计算平均值/最小值?

在循环数据中查找异常值

在 SQL 中查找按日期分组的集合中的平均最低项

c中的平均值,不超过值数据类型?