Mysql 创建查询以按2个字段分组获取未完成呼叫的计数

Mysql 创建查询以按2个字段分组获取未完成呼叫的计数,mysql,sql,date,join,min,Mysql,Sql,Date,Join,Min,这个问题的一个小更新 有一张桌子是服务员的 +---------------------+---------+----------------+--------------+--------------+ | call_time | call_id | queue_num_curr | ast_num_curr | proceed_wait | +---------------------+---------+----------------+--------------+-

这个问题的一个小更新

有一张桌子是服务员的

+---------------------+---------+----------------+--------------+--------------+
| call_time           | call_id | queue_num_curr | ast_num_curr | proceed_wait |
+---------------------+---------+----------------+--------------+--------------+
| 2019-11-18 08:14:30 | f27de4f | 9010           | 2            |            1 |
| 2019-11-18 08:14:35 | f27de4f | 9002           | 5            |            1 |
| 2019-11-18 08:14:41 | f27de4f | 9003           | 1            |            0 |
| 2019-11-18 08:14:45 | asdf231 | 9010           | 2            |            1 |
| 2019-11-18 08:14:50 | asdf231 | 9002           | 5            |            1 |
| 2019-11-18 08:14:55 | rete125 | 9010           | 2            |            1 |
| 2019-11-18 08:15:00 | rete125 | 9009           | 5            |            1 |
| 2019-11-18 08:15:05 | a7rf5gs | 9003           | 2            |            1 |
| 2019-11-18 08:15:10 | a7rf5gs | 9006           | 5            |            1 |
| 2019-11-18 08:15:15 | a7rf5gs | 9009           | 1            |            0 |
| 2019-11-18 08:15:20 | qawe234 | 9003           | 2            |            1 |
| 2019-11-18 08:15:25 | qawe234 | 9008           | 5            |            1 |
| 2019-11-18 08:15:30 | qawe234 | 9004           | 1            |            0 |
| 2019-11-18 08:15:35 | 49c43ad | 9004           | 2            |            1 |
| 2019-11-18 08:15:41 | 49c43ad | 9007           | 5            |            1 |
| 2019-11-18 08:15:45 | bxfdrtr | 9010           | 3            |            1 |
| 2019-11-18 08:15:50 | bxfdrtr | 9012           | 4            |            1 |
| 2019-11-18 08:15:55 | tofnt62 | 9010           | 5            |            1 |
| 2019-11-18 08:16:00 | tofnt62 | 9021           | 1            |            1 |
+---------------------+---------+----------------+--------------+--------------+
调用id为“f27de4f”的调用于9010年开始,并于9003年结束,因为在9010年开始的调用id为“asdf231”的调用id='f27de4f'调用中有一条继续等待=0的记录,仍然在9002中继续,但尚未完成,因为对于调用id='asdf231'没有继续_wait=0的记录,对于调用id为'rete125'的调用,也没有继续_wait=0的记录,并且此调用也未完成。因此,对于队列9010,查询结果应为:

queue_num      ast_num  count 
9010            2       2
9010            3       1
9010            5       1
queue_num      ast_num  count 
9010            2       2
9010            3       1
9010            5       1
9004            2       1
对于9003,结果应为0,因为对9003的所有调用(“a7rf5gs”和“qawe234”)都已完成。对于9004,结果应为1,因为对于调用id为“49c43ad”的调用,没有继续_wait=0的记录

因此,结果应该是:

queue_num      ast_num  count 
9010            2       2
9010            3       1
9010            5       1
queue_num      ast_num  count 
9010            2       2
9010            3       1
9010            5       1
9004            2       1

<>您可以加入一个聚合查询,它检索未完成调用的最小<代码> CalyTime< /CalpA>代码> CALLYIDID>代码>。未完成的调用是一个没有记录的调用,其中
procedure\u wait=0

select t.queue_num_curr, t.ast_num_curr, count(*)
from mytable t
inner join (
    select call_id, min(call_time) call_time
    from mytable 
    group by call_id
    having max(proceed_wait = 0) = 0
) tmin on tmin.call_id = t.call_id and tmin.call_time = t.call_time
group by t.queue_num_curr, t.ast_num_curr
order by t.queue_num_curr, t.ast_num_curr

queue_num_curr | ast_num_curr | count(*) -------------: | -----------: | -------: 9004 | 2 | 1 9010 | 2 | 2 9010 | 3 | 1 9010 | 5 | 1 队列数当前数当前数计数(*) -------------: | -----------: | -------: 9004 | 2 | 1 9010 | 2 | 2 9010 | 3 | 1 9010 | 5 | 1
注意:我认为在结果中,
queue_num=9004
应该有
ast_num=2
而不是
1
(应该对应于call_id
49c43ad
)。

如果
queue_num\u curr
可以为特定的调用上调或下调,数据的顺序是什么?
qawe234
的9004带有
procedure\u wait=0
。即使
qawe234
仍处于活动状态,9004的预期结果是否已完成?您需要一些东西来定义记录的顺序。到目前为止,似乎没有任何专栏包含这样的信息。例如,我们可以假设您有一个名为
id
的列,其序列是自动递增的吗?或者可能是一个时间戳列?WEBjuju,每个调用都有一个链。例如,QAW234:9003-9008-9004。这意味着调用从9003开始,跳转到9008,然后再次跳转到9004,并在9004完成,因为procedue_wait=0.GMB,我通过添加call_时间字段编辑了这个问题