创建查询以获取未完成呼叫的计数

2023-12-19

有表 waiter_log 作为

+---------+----------------+--------------+--------------+
| call_id | queue_num_curr | ast_num_curr | proceed_wait |
+---------+----------------+--------------+--------------+
| f27de4f | 9010           | 2            |            1 |
| f27de4f | 9002           | 5            |            1 |
| f27de4f | 9003           | 1            |            0 | 
| asdf231 | 9010           | 2            |            1 |
| asdf231 | 9002           | 5            |            1 |
| rete125 | 9010           | 2            |            1 |
| rete125 | 9009           | 5            |            1 |
| a7rf5gs | 9003           | 2            |            1 |
| a7rf5gs | 9006           | 5            |            1 |
| a7rf5gs | 9009           | 1            |            0 |
| qawe234 | 9003           | 2            |            1 |
| qawe234 | 9008           | 5            |            1 |
| qawe234 | 9004           | 1            |            0 |
| 49c43ad | 9004           | 2            |            1 |
| 49c43ad | 9007           | 5            |            1 |
+---------+----------------+--------------+--------------+

call-id 'f27de4f' 的呼叫于 9010 开始并于 9003 结束,因为有一条记录,其中 call-id='f27de4f' 的proceed_wait = 0
call-id 'asdf231' 的呼叫于 9010 开始,仍在 9002 继续进行,尚未完成,因为没有 call-id='asdf231' 的proceed_wait = 0 记录 同样,对于 call-id 'rete125' 的呼叫,没有proceed_wait = 0 的记录,并且该呼叫也未完成。 因此,对于队列 9010 查询结果应为 2(未完成调用的计数) 对于 9003 结果应该是 0 ,因为对 9003 的所有调用('a7rf5gs' 和 'qawe234')都已完成。 对于 9004,结果应为 1,因为对于呼叫 ID 为“49c43ad”的呼叫,没有proceed_wait = 0 的记录。

如何创建查询来获取未完成呼叫的计数,如下所示:

queue_num   count 
9010         2
9004         1

UPD:在这里我更新了我的问题创建查询以获取按 2 个字段分组的未完成呼叫的计数 https://stackoverflow.com/questions/58904522/create-query-to-get-count-of-uncompleted-calls-group-by-2-fields


这是另一种无需相关子查询或窗口函数即可工作的方法:

对于每一行w1,尝试找到另一行w2具有相同的 call_id 和 0 表示呼叫已完成。使用 LEFT OUTER JOIN,我们可以测试没有的情况w2给定 call_id 存在行。

然后对假设的行进行另一个连接w3具有相同的 call_id 和较小的 ast_num_curr 值。再次,使用外连接,我们可以检查不存在这样的行。这意味着w1必须具有该 call_id 的 ast num 的最小值。

SELECT w1.call_id, w1.queue_num_curr
FROM waiter_log AS w1
LEFT OUTER JOIN waiter_log AS w2
  ON w1.call_id = w2.call_id AND w2.proceed_wait = 0 
LEFT OUTER JOIN waiter_log AS w3
  ON w1.call_id = w3.call_id AND w1.ast_num_curr > w3.ast_num_curr
WHERE w2.call_id IS NULL AND w3.call_id IS NULL;

Output:

+---------+----------------+
| call_id | queue_num_curr |
+---------+----------------+
| 49c43ad |           9004 |
| asdf231 |           9010 |
| rete125 |           9010 |
+---------+----------------+

要获取每个queue_num_curr的计数,请将上面的查询包装在派生表子查询中,并在外部查询中进行计数:

SELECT queue_num_curr, COUNT(*) AS count
FROM (
  SELECT w1.call_id, w1.queue_num_curr
  FROM waiter_log AS w1
  LEFT OUTER JOIN waiter_log AS w2
    ON w1.call_id = w2.call_id AND w2.proceed_wait = 0
  LEFT OUTER JOIN waiter_log AS w3
    ON w1.call_id = w3.call_id AND w1.ast_num_curr > w3.ast_num_curr
  WHERE w2.call_id IS NULL AND w3.call_id IS NULL
) AS t
GROUP BY queue_num_curr;

Output:

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

创建查询以获取未完成呼叫的计数 的相关文章

随机推荐

  • 如何抑制CatBoost迭代结果?

    我正在尝试使用 CatBoost 来拟合二进制模型 当我使用下面的代码时 我想verbose False可以帮助抑制迭代日志 但事实并非如此 有没有办法避免打印迭代 model CatBoostClassifier iterations 3
  • 动态更改数据模板

    我有一个绑定到任务的项目控件 每个任务都有任务状态 我为每个任务状态定义了不同的数据模板 以及数据模板选择器 问题是我无法弄清楚当任务状态动态更改时如何触发数据模板选择器 我想知道如何将数据触发器与数据模板一起使用 如果这不起作用 我将探索
  • 我如何使用 javascript/jquery 知道给定字符串是 hex、rgb、rgba 或 hsl 颜色?

    我使用正则表达式来表示十六进制 a fA F0 9 6 a fA F0 9 3 但我不知道我应该做什么来找到 rgb rgba 和 hsl 我正在以字符串形式获取输入 例如 输入将包含 rgb 0 0 0 或 rgb 0 0 0 0 2 这
  • android 如何比较待处理的意图

    文档PendingIntent FLAG NO CREATE http developer android com reference android app PendingIntent html FLAG NO CREATE reads
  • Android 列表视图搜索过滤器

    我正在尝试为 Android 进行列表视图搜索 我发现很多教程都可以做到这一点 搜索栏位于顶部 如果您在框中键入内容 结果将被过滤 在我的应用程序中 我想在过滤完成后单击给定的项目 我已经实现了 setOnItemClickListener
  • 引导两个导航栏折叠

    在引导程序中 我想在彼此下方有两个导航栏 我的想法 Navbar 1有一个品牌 主菜单 Navbar 2 在navbar1下面 有一个品牌叫做 子菜单 当用户在手机上查看该网站时 他 她会看到两个可折叠的导航栏 用户现在可以选择要打开的导航
  • 您多久更新一次 SQL Server 2000 中的统计信息?

    我想知道更新统计数据之前是否对您有帮助 您是如何知道更新它们的 exec sp updatestats 是的 如果您发现查询的性能未达到应有的效果 更新统计信息会非常有帮助 这可以通过检查查询计划并注意何时执行表扫描或索引扫描而不是索引查找
  • 在 Web 应用程序中记录用户活动

    我希望能够在网络应用程序中记录用户活动 我目前正在使用 log4j 它可以很好地记录错误等 但我不确定记录用户 执行的 servlet 方法和方法参数的最佳方法是什么 我正在使用 spring security 进行身份验证 典型的 Ser
  • 如何向网络服务发送和接收表情符号[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我需要在我的 Android 应用程序中使用表情符号进行聊天 我正在使用这个库https github com rockerhieu
  • gdb 堆栈奇怪

    我有时会得到这个奇怪的回溯 gdb bt 0 0x00002b36465a5d4c in AY16 Loop M16 from opt intel mkl 10 0 3 020 lib em64t libmkl mc so 1 0x0000
  • Python fastcgi 客户端

    我正在用 python 编写一个工具来监控 fastcgi 应用程序 我唯一需要 fastcgi 的是加载 ping 和状态页面 如果失败则返回某种错误 有很多库 从 python fasctgi 绑定到twisted 似乎能够做到这一点
  • Zend Framework 2 模块在 Bootstrap 控制器之间共享变量

    是否可以在 Module php 中创建变量甚至共享对象 如数据库适配器 以在所有视图控制器中使用 Zend 框架 2 例如 class Module public function onBootstrap MvcEvent e modul
  • python:腌制c对象

    首先 我并不期待解决方案 只是希望得到一些关于如何开始的指导 我有一个带有嵌入式 Python 解释器的 C 程序 程序用作输入的 Python 脚本显然是指 C 定义的对象和函数 我现在想让其中一些对象可腌制 pickle 文档描述了如何
  • Plone/z3c.form 3.2.1-如何使自动完成小部件(不是必填字段)使用自定义绑定源对象?

    我正在尝试使用绑定的源对象获取自动完成小部件以表单 z3c form 呈现 在接口类中 Parent schema Choice title u A Parent source ParentSourceBinder required Fal
  • Bootstrap Validator - 验证成功时发出警报

    我在用着引导验证器 http bootstrapvalidator com 插件来验证我的表单 我试图在表单成功验证时发出警报 HTML
  • LINQ To Entities 无法识别数组索引

    我的代码中有以下功能 public List
  • 如何以不同的方式设置标准 GWT 组件 (TabBar) 的样式?

    我正在使用 TabBar 并且想以不同的方式设置组件的样式 所以一次是这种风格 另一次是那种风格 我以为这会起作用 但事实并非如此 TabBar t new TabBar t addTab 1 t addTab 2 t addStyleNa
  • 将 stdint 与 swig 和 numpy.i 一起使用

    我正在开发一个模块来使用c inline在Python代码中基于swig 为此我想做numpy数组可访问于C 到目前为止我使用的 C 类型如下unsigned short但我想使用类似的类型uint16 t from stdint h保存我
  • Python 文档 (:obj:`str`) 与 (str)

    我一直在读这个Google 风格 Python 文档字符串示例 http sphinxcontrib napoleon readthedocs io en latest example google html了解 Python 文档的编写程
  • 创建查询以获取未完成呼叫的计数

    有表 waiter log 作为 call id queue num curr ast num curr proceed wait f27de4f 9010 2 1 f27de4f 9002 5 1 f27de4f 9003 1