mysql - 如何在 SQL 中为相同的 AgentID 选择下一个日期时间
问题描述
第一列 (CALL_START) 是某个特定 ID (CALLER_ID) 的某个人拨打电话的时间。在此处查看数据片段。
现在我想挑选出相同 ID 的下一个调用并将其存储在一个名为“Next_call”的新列中,如果没有下一个调用它存储 NULL。
所以这就是我想要的结果。
CALL_START NEXT_CALL CALLER_ID
2017-01-14 10:50:38 NULL 2837061
2017-01-14 10:21:03 2017-01-14 10:50:38 2837061
CALLER_ID 应该相同才能找到下一个呼叫,所以我必须根据每个 ID 找到下一个呼叫。
到目前为止,我已经尝试过了。
select CALL_START, CALLER_ID
from call_data.records
where CALL_START > (select CALL_START from call_data.records group by CALLER_ID)
;
这个查询对我不起作用,我不知道该怎么做,因为我正在学习 sql 记录是我使用不同表的数据加入的临时表。
我是学习 SQL 的新手,所以任何帮助将不胜感激。
解决方案
如果您正在运行 MySQL 8.0,则可以使用lead()|
:
select
call_start,
lead(call_start) over(partition by caller_id order by call_start) next_call,
caller_id
from call_data.records r
在早期版本中,一种替代方法是子查询:
select
call_start,
(
select min(r1.call_start)
from call_data.records r1
where r1.caller_id = r.caller_id and r1.call_start > r.call_start
) next_call,
caller_id
from call_data.records r
推荐阅读
- java - 如果我使用 swapoff -a 关闭交换并使用 RandomAccessFile 写入一些数据,它会每次刷新到磁盘吗?
- javascript - Java BigInteger 比 Android 上的 JavaScript 慢得多
- scala - Spark根据条件添加多列
- python - print(len(list_a)) 打印为两个,但 print(list_a) 打印为 []
- visual-studio - 是否可以导航到 VS 2017 中收集在任意文本文件而不是错误列表窗格中的 msbuild 错误?
- php - 给定 PHP 和 SQL 中的以下结构,我如何返回下一个可用的约会?
- microsoft-cognitive - 是否可以将照片中的人脸添加到没有 Face ID 的人?
- rust - 如何使用更高等级的特征边界使返回的 impl Fn 更通用?
- kendo-ui - Kendo UI 网格编辑器字段自定义验证
- c# - 如何发送 mailmessage.to 使收件人看不到彼此的电子邮件