繁体   English   中英

SQL - 比较同一列中的值之间的差异

[英]SQL - Comparing difference between values in same column

我需要一些有关如何比较同一列LogNum中的值以查找“不寻常”条目的帮助。 例如,在我的LogTbl下面的表格中,我们可以看到在ID号 4 上,与之前的条目模式相比, LogNum条目大幅跳跃。

如何比较这些LogNum条目并识别/输出任何比上一个条目增加超过 5% 的条目,使用LogDate对条目进行老化?

ID 日志日期 对数
1 2006-05-26 00:00:00.000 112
2 2006-07-19 00:00:00.000 145
3 2006-09-08 00:00:00.000 162
4 2006-11-01 00:00:00.000 1787

谢谢。

您的“大规模”一词没有正式的标准。 但是我想你可以尝试 select 值将在mean(valuename) - 2*STDDEV(valuename)MEAN() +2*STDDEV()

您的要求有广泛的相互影响,一种可能的想法是使用平均值或标准偏差来识别阈值并过滤超过阈值的行。

with a as (
    select *, avg(lognum) over() threshold
  from t
)
select *
from a
where lognum > threshold

如果您只对相邻行之间的差异感兴趣,则可以使用lead ,即查找值增加 > 前一个值的 25% 的行

select Id, LogDate, Lognum
from (
    select *, Lead(lognum) over(order by logdate) nxt
    from t
)t
where nxt > lognum * 1.25

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM