Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
引用SQL中以前的行而不获取_Sql_Rows_Lag - Fatal编程技术网

引用SQL中以前的行而不获取

引用SQL中以前的行而不获取,sql,rows,lag,Sql,Rows,Lag,有没有一种方法可以在select语句中使用类似LAG()的函数引用前一行(或多行),而不获取结果中的行?我想检查是否存在具有相同主题名称和标签(不同列)的行的记录计数大于85的情况,每5分钟记录计数一次,然后创建一列,其中包含值“TRUE”或“False”。但是,我只希望true或false值位于不同的主题名称和标签组合旁边,其中记录计数值是该组合的最大值(记录计数) select Distinct n.SUBJECT ,n.label ,cast(cast(max(a.RecCount) A

有没有一种方法可以在select语句中使用类似LAG()的函数引用前一行(或多行),而不获取结果中的行?我想检查是否存在具有相同主题名称和标签(不同列)的行的记录计数大于85的情况,每5分钟记录计数一次,然后创建一列,其中包含值“TRUE”或“False”。但是,我只希望true或false值位于不同的主题名称和标签组合旁边,其中记录计数值是该组合的最大值(记录计数)

select Distinct n.SUBJECT 
,n.label
,cast(cast(max(a.RecCount) AS DECIMAL(10, 2)) / 100 AS DECIMAL(10, 2)) AS MaxRecCount 
,"Red" = 
CASE 
    when n.label = lag(n.label,1) OVER(Partition BY n.label ORDER BY n.label)
     and cpu.RecCount >=85.00
     and LAG(cpu.RecCount,1) OVER(Partition BY n.label ORDER BY n.label) >=85.00
     and LAG(cpu.RecCount,2) OVER(Partition BY n.label ORDER BY n.label) >=85.00
        then 'TRUE'
        ELSE 'FALSE'
END 
from n, cpu
group by n.subject, n.label, cpu.reccount 

对于原始RecCount和之前的2条记录,这将返回TRUE of FALSE,但我只希望在数据采集过程中,如果记录计数在行中的任意点超过85 3次,则引用TRUE或FALSE,并将TRUE或FALSE值放置在特定主题的max()RecCount旁边的新列“Red”中,标签组合。

是否没有datetime列可用于查看在5分钟时间段内创建了多少条记录?这不是MySQL。@JacobH,有datetime列是,但这有什么帮助?您是否不尝试在5分钟时间段内计算具有相同名称和标签的记录数?也许我不理解这些要求。@JacobH我想看看计数是否连续三次大于85,如果是,则将值设置为TRUE,否则设置为FALSE,但只返回具有不同主题和标签组合的所有记录的最大值