当增量值重新开始时如何排除行?

2024-04-15

我是一个新手海报,但花了很多时间在这里研究答案。我不太清楚如何使用 SQL Server 2008 R2 创建 SQL 结果集,它可能应该使用更现代版本的超前/滞后。我试图根据一列的排序来聚合数据,但每个序列中可能有不同数量的实例。我知道序列已结束的唯一方法是当下一行具有较低的序列号时。所以它可能是 1-2、1-2-3-4、1-2-3,我必须弄清楚如何从中得到 3 个聚合。

源数据是如下所示的连接表(请帮我格式化):

recordID instanceDate moduleID iResult interactionNum
1356    10/6/15 16:14   1        68          1
1357    10/7/15 16:22   1        100         2
1434    10/9/15 16:58   1        52          1
1435    10/11/15 17:00  1        60          2
1436    10/15/15 16:57  1        100         3
1437    10/15/15 16:59  1        100         4

我需要找到一种方法,根据最后一列中的值将本示例中的前 2 行与后 4 行分开。

我希望最终得到的是一个如下所示的结果集,它根据分组对 iResult 列进行平均,并从分组中获取第一个实例日期:

instanceDate    moduleID    iResult
10/6/15           1          84
10/9/15           1          78

如果我能找到一种分离组的方法,我可以使用 MIN 和 AVG 聚合得到这个结果。数据按instanceDate排序(请忽略此处的日期格式),然后当查询找到interactionNum

这是我到目前为止的查询(包括给出上述数据集的联接):

SELECT 
    X.* 
FROM
   (SELECT TOP 100 PERCENT   
        instanceDate, b.ModuleID, iResult, b.interactionNum 
    FROM 
        (firstTable a  
    INNER JOIN 
        secondTable b ON b.someID = a.someID)       
    WHERE 
        a.someID = 2        
        AND b.otherID LIKE 'xyz'    
        AND a.ModuleID = 1
    ORDER BY 
        instanceDate) AS  X

OUTER APPLY

(SELECT TOP 1 
     *
 FROM
     (SELECT    
          instanceDate, d.ModuleID, iResult, d.interactionNum   
      FROM 
          (firstTable c  
      INNER JOIN 
          secondTable d ON d.someID = c.someID) 
      WHERE 
          c.someID = 2      
          AND d.otherID LIKE 'xyz'  
          AND c.ModuleID = 1    
          AND d.interactionNum = X.interactionNum
          AND c.instanceDate < X.instanceDate)  X2
      ORDER BY 
          instanceDate DESC) Y
WHERE 
    NOT EXISTS (SELECT Y.interactionNum INTERSECT SELECT X.interactionNum)

但这会返回一个临时结果集,如下所示:

instanceDate    ModuleID    iResult interactionNum
10/6/15 16:10   1            68         1
10/6/15 16:14   1            100        2
10/15/15 16:57  1            100        3
10/15/15 16:59  1            100        4

问题是,interactionNum 3、4 不属于这个结果集。当我循环此查询时,它们将进入下一个结果集。如何将它们排除在本次迭代的结果集中?我需要此查询的结果集仅包含前两行,“看到”源数据的第 3 行的 interactionNum 值低于第 2 行的值。


不确定应该使用什么 ModuleID,但我猜您正在寻找类似这样的东西:

select min (instanceDate), [moduleID], avg([iResult])
from (
  select *,row_number() over (partition by [moduleID] order by instanceDate) as RN
  from Table1
) X
group by [moduleID], RN - [interactionNum]

这里的想法是为每个 moduleid 创建一个带有 row_number 的流水号,然后使用该流水号与 InteractionNum 之间的差值作为分组标准。

示例中SQL小提琴 http://sqlfiddle.com/#!3/ab33c/1

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当增量值重新开始时如何排除行? 的相关文章

  • Sql 查询抛出标识符太长。最大长度为 128

    我正在处理一个简单的更新查询 在执行查询时看到以下错误 我非常清楚 这根本不应该是一个长度问题 可能是什么问题 Error 以identifier开头的标识符太长 最大长度为 128 我的查询 update dbo DataSettings
  • SQL Server:将 varchar 转换为十进制(也考虑指数表示法)

    我需要转换表的数据并进行一些操作 其中一种列数据类型是Varchar 但它存储decimal数字 我正在努力转换varchar into decimal 我努力了CAST TempPercent1 AS DECIMAL 28 16 问题是数
  • SQL 解析键值字符串

    我有一个像这样的逗号分隔字符串 key1 value1 key2 value2 key3 value3 key1 value1 1 key2 value2 1 key3 value3 1 我想将它解析成一个如下所示的表 Key1 Key2
  • 在分布式事务中手动登记后,使用 enlist=false 的连接不会关闭

    我有一个分布式事务上下文使用ServiceDomain 在其中 我打开一个 SQL 连接 其中连接字符串指定Enlist false 这样它就不是自动地被纳入交易 然后 如果我使用手动在分布式事务中登记连接EnlistDistributed
  • OVER ORDER BY 中的多个列

    有没有办法在 OVER ORDER BY 子句中指定多个列 SELECT ROW NUMBER OVER ORDER BY A Col1 AS ID FROM MyTable A 上面的方法工作正常 但尝试添加第二列不起作用 SELECT
  • 尝试使用 SQL 身份验证登录失败

    我正在尝试使用 sa 用户名及其密码连接到 SQL Server 2008 在 SQL Server 日志文件中我看到以下错误 用户 sa 登录失败 原因 尝试使用 SQL 登录 认证失败 服务器配置为 Windows 身份验证 仅有的 当
  • AWS DMS 无法截断 SQL 事务日志

    我们正在运行 AWS DMS 以 SQL 作为源 以 DynamoDB 作为目标 我们很难截断事务日志 我们看到每个 AWS DMS 有 2 个 SQL 任务 如下所示 begin transaction WVGLQ7HFWFWJCCPK4
  • 游标与更新

    一家公司使用 SQL Server 数据库来存储有关其客户及其业务交易的信息 您所在的城市引入了新的区号 对于前缀小于 500 的电话号码 区号 111 保持不变 前缀为 500 及以上的号码将分配区号 222 客户表中电话列中的所有电话号
  • BULK INSERT 中格式附近的语法不正确?

    我试图找出为什么我使用的 BULK INSERT 命令无法识别命令中使用的 FORMAT 和 FIELDQUOTE 选项 BULK INSERT dbo tblM2016 RAW Current Import File FROM x tms
  • 导致聚集索引扫描的日期参数

    我有以下查询 DECLARE StartDate DATE 2017 09 22 DECLARE EndDate DATE 2017 09 23 SELECT a col1 a col2 b col1 b col2 b col3 a col
  • TSQL - 创建从日期表,同时忽略带条件的中间步骤

    我在 MS SQL 服务器中有以下表结构 现在 我想根据以下规则获取每个 id 的 in 日期 如果第二天 23 59 出 和 00 00 进 则忽略这些 如果同一天有 out 和 in 请忽略这些 例如我应该得到以下结果 id in ou
  • VBA仅清除数据透视表缓存,但保留数据透视表结构

    如何使用VBA清除数据透视表缓存 但不破坏数据透视表结构 我的数据透视表已连接到外部数据源 SQL 源决定哪个用户应该查看数据的哪一部分 当表刷新时 源会填充该表 我想保存 Excel 文件并使用干净的数据透视表 内部没有数据 分发它 结果
  • Sql Server 字符串到日期的转换

    我想像这样转换一个字符串 10 15 2008 10 06 32 PM 转换为 Sql Server 中的等效 DATETIME 值 在 Oracle 中 我会这样说 TO DATE 10 15 2008 10 06 32 PM MM DD
  • 如何对 Stack Exchange Data Explorer (SEDE) 结果进行分页?

    Using 数据浏览器 https data stackexchange com stackoverflow query 875322创建查询 SELECT P id creationdate tags owneruserid answer
  • 无法使用 django-mssql 提供程序

    有谁知道如何使用 django mssql 提供程序 我已经安装了要求 但无法让它工作 如果 settings py 中没有 sqlserver ado 它可以正常导入 testenv C Users Robin test gt pytho
  • 如何将存储过程中的值返回到 EF

    我试图通过 EF 调用存储过程并从存储过程中检索返回值 我用过this https stackoverflow com questions 6861737 executesqlcommand with output parameter an
  • 别名 .\SQLEXPRESS 为 (LocalDB)\MSSQLLocalDB

    I have SQLEXPRESS已安装 但代码假设我有一个名为 LocalDB MSSQLLocalDB 如何创建别名以便不必安装SQLLocalDb 启动 Sql Server 配置管理器 使用以下参数为 64 位 SQL Native
  • 有没有类似 ActiveRecord::Migration for .NET 的东西?

    我玩过 ruby on Rails ActiveRecord Migration类 我喜欢保持数据库模式版本化是多么容易 我想在我的 ASP NET 项目中做类似的事情 我想知道是否有人听说过一个可以执行以下操作的工具ActiveRecor
  • 如何列出表中的所有列?

    对于各种流行的数据库系统 如何列出表中的所有列 对于 MySQL 请使用 DESCRIBE name of table 只要您使用 SQL Plus 或 Oracle 的 SQL Developer 这也适用于 Oracle
  • SQL 查询Where Column = '' 返回表情符号字符

    好的 我有一个包含三列的表 Id Key Value 我想删除所有行Value是空的 因此 我在删除之前编写了要选择的查询 Select from Imaging ImageTag where Value 到目前为止一切都很标准 现在这是奇

随机推荐

  • 使用vba从雅虎财经抓取数据

    我需要从雅虎财经页面读取股票的收盘价 我在使用谷歌财经页面之前就已经回答了这个问题 但该页面不再可用 我相信谷歌已经完全改变了它的财经页面 我相信我可以在雅虎财经上应用同样的方法 只需稍作修改 假设雅虎财经对股票代码 AAPL 苹果 有以下
  • 如何使用不同用户表的多重身份验证注销 JWT 令牌

    这是 config auth php 中的代码 guards gt web gt driver gt session provider gt users api gt driver gt jwt provider gt users hash
  • 领域文件的大小是如何发展的?

    领域文件的大小是如何发展的 首先 我有一个包含多个属性的领域文件 其中一个是包含 860 个条目的数组 每个数组条目又包含几个属性 一个数组属性声明条目的名称 我观察到以下情况 如果名称属性为 Criteria A1 直到 Criteria
  • SKReceiptRefreshRequest 每次都询问密码

    我在用SKReceiptRefreshRequest验证来自服务器的收据 问题是每次提示密码时它都会询问我 谁能帮我建议一种更好的方法来验证用户收据 这就是我正在做的事情 我正在使用refreshReceipt当应用程序启动时 void r
  • 如何将 GridLayout.Spec 用于扩展多行的列?

    我正在尝试动态创建一个 2 行 4 列的表 但每种情况下行和列的大小不应相同 也许我会附上一张图片 我想 据我了解 当我不使用 XML 标记来使用 setLayoutParams 中的 GridLayout Spec 来实现此目的时 但我不
  • 如何让属性设置器通过SQL函数发送值

    我试图在 Rails 生成其 sql 查询之前 使 ActiveRecord 模型中的属性设置器将其值包装在 text2ltree postgres 函数中 例如 post path 1 2 3 post save 应该生成类似的东西 UP
  • 对象“_Application”的方法“VBE”失败

    我的一位客户在运行下面的 Excel VBA 代码时遇到问题 他收到以下错误Method VBE of object Application failed 但只有一次 在他打开 VBE 后 它开始工作 而且 直到昨天 它还对他有效 他正在使
  • 如何在 Angular 4 中为数字管道指定语言环境千位分隔符

    例如 如何为 Angular 4 中的数字管道指定 覆盖默认 区域设置 千位分隔符 p total number 角度 5 从 Angular 5 开始 区域设置参数已添加到十进制管道中 如官方文档中所示 https angular io
  • 将多个 go 例程的响应获取到数组中

    我需要从多个 go 例程获取响应并将它们放入一个数组中 我知道通道可以用于此目的 但是我不确定如何确保所有 go 例程都已完成结果的处理 因此我正在使用等待组 Code func main log Info Collecting ints
  • 允许使用 Angular FileSaver.js 选择目录

    我在用文件保存器 js https github com eligrey FileSaver js从 Angular 保存文件 但是 我想允许用户选择目录 我怎样才能做到这一点 我不相信这是可能的 浏览器可以选择是否向用户显示 另存为 对话
  • 找不到模块“rxjs/subject/BehaviorSubject”

    我正在使用 Angular 2 当我使用这两者中的任何一个时 我的程序运行良好 import BehaviorSubject from rxjs Rx import BehaviorSubject from rxjs 但是 我尝试使用以下方
  • 从 Delphi 组件捕获 WM_COPYDATA

    我正在尝试编写一个组件 通过 WM COPYDATA 在应用程序之间发送字符串消息 我想捕获 WM COPYDATA 但这不起作用 TMyMessage class TComponent private Private declaratio
  • 如何将 Liquid 标签突出显示在有序列表中?

    这就是我want页面为 ol li first li li second code code li li third li ol 这就是我正在写的 1 first 2 second highlight ruby code here endh
  • 验证外键时 Accepts_nested_attributes_for 出现问题

    我正在使用 Ruby on Rails v3 2 2 我想解决使用时与外键验证相关的问题accepts nested attributes for and validates associated回报率方法 也就是说 我有以下模型类 cla
  • SQLite 区分大小写的搜索,带有整理 nocase 字段

    我有一个数据库 我无法更改 它有一个整理 nocase 字段 name string collate nocase 我需要对此区分大小写的字段进行搜索 这可以通过 整理 nocase 实现吗 Thanks Just 切换排序规则 http
  • SQL - 返回有限的行数,但返回完整的行数

    场景 我需要从 Visual FoxPro 数据库中提取信息 但是 对此运行大型查询可能会导致系统锁定 为了解决这个问题 我们设置了限制 如果查询运行超过一定时间 则取消查询 并限制它将返回的行数 有没有办法使用 SELECT TOP 进行
  • 是否可以使用 HTML5 创建垂直仪表?

    通常 如果我创建
  • 当用户更改活动进程时触发事件

    当程序用户将活动窗口更改为不同进程的窗口时 是否有一个事件或创建事件的方法会触发 如果没有这样的事件 那么制作类似的东西的最佳方法是什么 我目前有一个每 3 秒运行一次 Process GetCurrentProcess 的计时器 但我正在
  • dll 中的 Delphi 表单

    将具有完整功能的Form放在dll中是个好主意吗 主应用程序将调用返回表单对象的 dll 函数 在 Delphi 中执行此操作的公认方法是使用包而不是 DLL 包本质上是 DLL 但具有 Delphi 特定功能 允许跨包边界使用 VCL 对
  • 当增量值重新开始时如何排除行?

    我是一个新手海报 但花了很多时间在这里研究答案 我不太清楚如何使用 SQL Server 2008 R2 创建 SQL 结果集 它可能应该使用更现代版本的超前 滞后 我试图根据一列的排序来聚合数据 但每个序列中可能有不同数量的实例 我知道序