我有一个无法解决的问题,谁能给我一些建议?
From To Start End
9901234567 8854320145 10:00 10:00
9435678911 7657894335 10:30 10:33
8764091245 9765487678 09:45 09:47
8854320145 9901234567 10:05 10:07
7609123987 8854320145 11:13 11:13
6501928465 7609123987 08:09 08:13
这里from是一个电话号码to也是一个电话号码,开始和结束是通话的持续时间。根据这些详细信息,我需要识别未接来电和回拨。我应该如何使用SQL解决这个问题?
2条答案
按热度按时间hrysbysz1#
在Oracle 12中,您可以将
MATCH_RECOGNIZE
与LEAST
和GREATEST
一起使用:其中,对于样本数据:
输出:
| 从|到|开始|结束|
| --------------|--------------|--------------|--------------|
| 9901234567| 8854320145|十点整|十点整|
| 8854320145| 9901234567|十点零五分|十点零七分|
fiddle
cyej8jka2#
我相信你可以将表连接到它本身,将
from
链接到to
,反之亦然:如果存在多个未接呼叫和相同的从/到/从的回叫,则此操作将失败。目前尚不清楚这是否存在于您的数据中。
为了解决这个问题,创建一个新的派生表,将两个号码之间的呼叫从1到N编号,而不管它们的顺序(x呼叫y或y呼叫x),这允许我们确定双方之间的下一个呼叫是否是回叫。