如何返回满足特定事件序列的行?

2023-12-30

我正在尝试提取满足特定事件序列的 UserID 的记录。如果用户有一个 JOIN,然后是一个后续的 CANCEL,然后是一个后续的 JOIN,我想在结果集中返回它们。我需要根据需要一次运行此查询一天,或一次运行几天。

下表显示了满足和不满足该顺序的 UserID 的示例。

+--------+--------+---------------------+------------+------------------+
| rownum | UserID |      Timestamp      | ActionType | Return in query? |
+--------+--------+---------------------+------------+------------------+
|      1 |  12345 | 2016-11-01 08:25:39 | JOIN       | yes              |
|      2 |  12345 | 2016-11-01 08:27:00 | NULL       | yes              |
|      3 |  12345 | 2016-11-01 08:28:20 | DOWNGRADE  | yes              |
|      4 |  12345 | 2016-11-01 08:31:34 | NULL       | yes              |
|      5 |  12345 | 2016-11-01 08:32:44 | CANCEL     | yes              |
|      6 |  12345 | 2016-11-01 08:45:51 | NULL       | yes              |
|      7 |  12345 | 2016-11-01 08:50:57 | JOIN       | yes              |
|      1 |   9876 | 2016-11-01 16:05:42 | JOIN       | yes              |
|      2 |   9876 | 2016-11-01 16:07:33 | CANCEL     | yes              |
|      3 |   9876 | 2016-11-01 16:09:09 | JOIN       | yes              |
|      1 |  56565 | 2016-11-01 18:15:16 | JOIN       | no               |
|      2 |  56565 | 2016-11-01 19:22:25 | CANCEL     | no               |
|      3 |  56565 | 2016-11-01 20:05:05 | CANCEL     | no               |
|      1 |  34343 | 2016-11-01 05:32:56 | JOIN       | no               |
+--------+--------+---------------------+------------+------------------+

我阅读了有关差距和岛屿的内容,并查看了各种复杂的论坛帖子,这些帖子围绕着我想要实现的目标跳舞。

目前,我所能做的就是查看一天的记录,对我需要的序列逻辑没有限制:

SELECT
    ROW_NUMBER() OVER (PARTITION BY UserID ORDER BY tmsmp) rownum
    ,UserID
    ,tmstmp
    ,ActionType
FROM
    t
    INNER JOIN  (
                SELECT UserID
                FROM t
                WHERE tmstmp BETWEEN '2016-11-20 00:00:01' AND '2016-11-20 11:59:59'
                GROUP BY UserID
                HAVING COUNT(*) >= 2
                ) AS sub ON t1.UserID = sub.UserID

谢谢您的意见!


您可以使用LEAD() :

SELECT * FROM (
    SELECT t.* ,
           LAG(t.ActionType,1) OVER(PARTITION BY t.userid ORDER BY t.timestamp) AS LAST_ACTION,
           LAG(t.ActionType,2) OVER(PARTITION BY t.userid ORDER BY t.timestamp) AS LAST_ACTION2,
           LEAD(t.ActionType,1) OVER(PARTITION BY t.userid ORDER BY t.timestamp) AS NEXT_Action,
           LEAD(t.ActionType,2) OVER(PARTITION BY t.userid ORDER BY t.timestamp) AS NEXT_Action2
    FROM YourTable t
    WHERE tmstmp BETWEEN <Start> AND <End>)
WHERE (t.actionType = 'JOIN' AND
      t.NEXT_Action = 'Cancel' AND
      t.NEXT_Action2 = 'JOIN')
  OR (t.LAST_ACTION= 'JOIN' AND
      t.actionType= 'Cancel' AND
      t.NEXT_Action = 'JOIN')
  OR (t.LAST_ACTION2= 'JOIN' AND
      t.LAST_ACTION = 'Cancel' AND
      t.actionType= 'JOIN')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何返回满足特定事件序列的行? 的相关文章

  • SQL 用新值替换旧值

    我有一个名为tbl Products 其中有一列名为articlenumber并且充满了像这样的数字s401 s402 etc 我生成了一个包含新商品编号的列表 它将替换旧的商品编号 s401 I00010 s402 I00020 s403
  • 删除原始数据中部分重复的记录

    我需要删除表中时间间隔为 1 或 2 分钟或相同且必须相同的所有记录ID但保留第一个记录 ID Time SN SD WE FW 10 2014 06 30 19 17 37 000 I 0 100 0 10 2014 06 30 19 1
  • SQL:比较不同表中的两个计数

    我有 3 张桌子 一张桌子上有世界上每个国家及其代币 NAME CODE Afghanistan AFG Albania AL Algeria DZ American Samoa AMSA Andorra AND Angola ANG An
  • 如何在没有 EF 的 ASP.NET MVC 中使用普通 sql?

    我有一个使用 linq to sql 的类 如何在 ASP NET MVC 3 中使用普通 sql 而不使用 EF 来实现相同的功能 public ActionResult Index var List from c in db OFFIC
  • 在 plsql 中立即执行

    如何从这段代码中得到结果 EXECUTE IMMEDIATE SELECT FROM table name through for loop 通常的方法看起来像这样 for items in select from this table l
  • MySQL:你能指定一个随机限制吗?

    有没有办法在 SQL MySQL 中随机化限制数字 我希望能够做的是在查询中获取随机数量的结果以在插入子查询中使用 而无需任何服务器端脚本 我希望能够作为假设说明运行的查询是 SELECT id FROM users ORDER BY RA
  • Rails 多租户架构,限制多个租户的访问范围

    目前我们有一个单租户数据库架构 MySQL 运行着超过 100 个数据库 我们使用 Apartment gem 切换子域上的数据库连接 一切都很顺利 然而 我们现在需要创建所谓的 伞 客户端 它可以访问一组现有客户端的所有数据 我不认为这对
  • Postgresql 中的 id 列位置重要吗?

    我正在测试删除主键列 id 的迁移 我想使用外键作为主键 当我运行并恢复迁移时 我看到表的状态是相同的 只是 id 列现在是最后一个 它会以任何方式改变我的数据库的行为吗 我是否应该费心去恢复迁移恢复代码中的列顺序 理论上一切都应该没问题
  • 是否可以使用“WHERE”子句来选择SQL语句中的所有记录?

    晚上好 我很好奇是否可以在 SQL 语句中创建一个 WHERE 子句来显示所有记录 下面一些解释 随机 SQL 语句 Java JSP示例 正常情况 String SqlStatement SELECT FROM table example
  • MySQL 中的断言

    我有一个针对大型数据库运行的 SQL 脚本 我想在开始时提出几个简单的查询 作为健全性检查 有没有办法在MySQL中写断言 或者任何类型的 选择 如果它与该值不匹配 则中止整个脚本 一些疯狂的代码 要点是 SET可能会引发 mysql 变量
  • 如何将自定义类型数组传递给 Postgres 函数

    我有一个自定义类型 CREATE TYPE mytype as id uuid amount numeric 13 4 我想将它传递给具有以下签名的函数 CREATE FUNCTION myschema myfunction id uuid
  • pq:无法调整共享内存段的大小。设备上没有剩余空间

    我在仪表板上有许多面板 数量约为 6 个 用于显示数据点图表 对 PostgreSQL 数据库的 Dockerized 实例进行查询 直到最近 面板都工作正常 有些面板停止工作并报告如下错误 pq 无法将共享内存段 PostgreSQL 2
  • Postgres、更新和锁定顺序

    我正在研究 Postgres 9 2 有 2 个更新 每个更新都有自己的事务 一个看起来像 UPDATE foo SET a 1 WHERE b IN 1 2 3 4 另一个也类似 UPDATE foo SET a 2 WHERE b IN
  • Rails csv 格式的原始查询,通过控制器返回

    我使用 Active Record 来获取我的故事 然后生成 CSV 这是在 Rails Cast 中完成的标准方法 但我有很多行 需要几分钟 我想如果我能让 posgresql 来做 csv 渲染 那么我可以节省一些时间 这是我现在所拥有
  • SQL Server 转换选择一列并将其转换为字符串

    是否可以编写一条从表中选择列并将结果转换为字符串的语句 理想情况下 我希望有逗号分隔的值 例如 假设 SELECT 语句看起来像这样 SELECT column FROM table WHERE column lt 10 结果是一列包含值的
  • Postgresql插入触发器设置值

    假设在 Postgresql 中 我有一个表T它的一栏是C1 我想在新记录添加到表中时触发一个函数T 该函数应该检查列的值C1在新记录中 如果它为 null 空 则将其值设置为 X 这可能吗 您需要触发器是正确的 因为为列设置默认值对您不起
  • Yii 查询时对相关模型的限制

    我遇到了极限问题 我正在使用的代码如下 model PostCategory model record model gt with array posts gt array order gt posts createTime DESC li
  • 如何避免应用程序停止后 docker 容器停止

    有一个带有 Postgres 服务器的 docker 容器 postgres 停止或崩溃 无关紧要 我需要检查一些环境变量和一些文件的状态 默认情况下 容器在应用程序完成后停止 我知道有一个选项可以更改 dockerfile 中的默认行为
  • 案例陈述以确定我是否应该结合

    我目前想做某种条件联合 给出以下示例 SELECT age name FROM users UNION SELECT 25 AS age Betty AS name 假设我只想在 用户 计数 gt 2 时合并第二个语句 否则不合并两者 总之
  • 从一个sql服务器选择到另一个sql服务器?

    我想将一台服务器 Data Old S1 中的一个表 T1 在 DB1 中 中的数据选择到另一台服务器 Data Latest S2 中的另一个表 T2 在 DB2 中 中的数据 我怎样才能做到这一点 请注意服务器的命名方式 查询也应该考虑

随机推荐

  • 可以用“and”、“or”等代替“&&”、“||”吗?

    我已经习惯了and and orC 中的关键字 我一直在使用它们 并且打字对我来说既快速又舒适 我听说这些别名是非标准的 可能不适用于所有编译器 但我不确定 我真的不知道这是不是真的 假设我把我的代码交给某人 他在编译时会遇到问题吗 我用的
  • 语句handle(hstmt)到底是做什么的?在 ODBC 中

    我是为 ODBC 编写 C 代码的新手 但在这里我有一个问题 在搜索了 C 的 odbc 函数教程的教程后 我仍然无法准确地得到 他们如何协作 该语句处理 hstmt 对数据库数据到底有什么作用 我知道它控制我作为参数提供的 SQL 查询语
  • 如何将唯一数字附加到字符串列表

    我有这个函数 它可以工作并给出正确的结果
  • 忽略精灵透明区域的像素完美碰撞

    我最近从这个链接中发现了两个精灵之间的像素完美碰撞 http www cocos2d iphone org forum topic 18522 http www cocos2d iphone org forum topic 18522 我只
  • git diff,显示删除和添加的同一行

    我不小心在master上工作 在那里我不得不开设一个新的分支 我几乎把它完全恢复到原来的样子 在一节课上 我得到了以下我无法理解的差异 index 4a9abb8 7c55879 100755 a includes site inc php
  • 将 proguard 与 espresso/androidTest 一起使用

    我正在尝试配置 proguard 以将其与我的 espresso UI 测试风格一起使用 问题是 Proguard 倾向于忽略我的调试 proguard 配置 配置如下 buildTypes debug minifyEnabled true
  • Keras中的自定义损失函数,如何处理占位符

    我正在尝试在 TF Keras 中生成自定义损失函数 如果损失函数在会话中运行并传递常量 则该损失函数可以工作 但是 当编译到 Keras 中时 它会停止工作 成本函数 感谢 Lior 将其转换为 TF def ginicTF actual
  • 水平 recylerview 与 viewpager 滚动同步滚动

    我有一个带有一些值的视图寻呼机 与 recyclerview 上方的 recyclerview 的计数相同 就像 tablayout 一样 我已经使用 snap helper 实现了该功能 并且一切正常 我唯一想要的就是我想将 recycl
  • 无法使用 PowerShell 从远程服务器访问环境变量

    我有一个脚本来查询远程 Windows 服务器列表 以检索我创建的环境变量的值 我可以看到该变量确实存在 因为当我打印所有变量时我可以看到它 EnvObj try Name MY VAR VerbosePreference Continue
  • Typo3 ke_search 扩展致命错误

    我对 Typo3 还很陌生 如果我不明白这里的问题是什么 我很抱歉 我安装了扩展 ke search 并遵循 很多次 给出的基本和简单的说明 https www typo3 macher de en facetted search ke s
  • 将 json 解组为类型

    我得到以下数据 timestamp 1526058949 bids 7215 90 2 31930000 7215 77 1 00000000 通过 websocket 我想将其解组到 type OrderBookItem struct P
  • 如何为 Linux、OS X、Windows 制作 Travis CI 测试包?

    有没有办法告诉 Travis CI 或其他持续集成服务 在不同的操作系统上测试包 使用文件系统 最好仔细检查它是否与平台无关 Update 3 Windows 支持已发布 您现在可以在 Linux macOS 和 Windows 上使用 T
  • 将 vue 组件传递给子组件

    我正在尝试创建一个 Vue 组件 该组件将接受组件作为参数来显示数据 但我无法弄清楚如何使其工作 如果我全局注册显示组件 使用 Vue component 它可以工作 但如果我在本地注册它 则会出现以下错误 Vue warn Unknown
  • Android 任务管理器或系统对话框

    我想知道有没有一种方法可以在显示系统对话框时获取事件 例如任务管理器 关闭警报 我可以通过如下意图从我的活动中关闭系统对话框 Intent closeDialog new Intent Intent ACTION CLOSE SYSTEM
  • 如何查找一个方法中调用的所有方法?

    如何在特定方法中调用其他类的方法 EXAMPLE 方法 getItem1 public String getItem1 throws UnsupportedEncodingException String a 2 a getBytes a
  • 去掉chart js折线图中的竖线

    I am using Chart js to generate maps and have customised it to a good extent But I am not able to remove the vertical gr
  • 鼠标悬停在 html 上更改图像

    我试图让图像在鼠标悬停时发生变化 这段代码适用于 IE 但不适用于其他浏览器 如 chrome opera safari 等 有什么想法吗 a href img src img login button 11 jpg a 您应该使用 ID
  • JavaScript 触发 InputEvent.isTrusted = true

    我正在尝试自动化一些任务JavaScript我需要使用InputEvent 但是当我使用正常事件时 我得到事件 isTrusted false而我的活动什么也没做 这是我的事件代码 var event new InputEvent inpu
  • JavaScript:通过类方法创建和销毁类实例

    我试图弄清楚如何通过类方法删除对象 我希望能够创建一个具有从内存中释放对象的 destroy 方法的类 到目前为止 我所做的研究还没有结论 我知道垃圾收集最终会处理该对象 但我想要一种更明确的方法来销毁它 这可能吗 class constr
  • 如何返回满足特定事件序列的行?

    我正在尝试提取满足特定事件序列的 UserID 的记录 如果用户有一个 JOIN 然后是一个后续的 CANCEL 然后是一个后续的 JOIN 我想在结果集中返回它们 我需要根据需要一次运行此查询一天 或一次运行几天 下表显示了满足和不满足该