postgresql - PostgreSQL与时间列的时间差(以分钟为单位)?
问题描述
我想使用 PostgreSQL(电话)以分钟为单位计算持续时间。
-- 08:54:55 和 08:56:10 之间的差异(仅时间)
SELECT DATE_PART('hour', '08:56:10'::time - '08:54:55'::time) * 60 + DATE_PART('minute', '08:56:10'::time - ' 08:54:55'::时间); -- 结果:1
如何修改它以适用于整个数据集?开始时间(只有小时和分钟,秒总是 00)和结束时间在同一列 Event_Time 中,按 Correlation_ID 分组。
Event_Time Customer_ID Case_ID Event_ID Correlation_ID Line_ID Internal_ID
10:11:00 id1 1 start sd34 l3 456
10:13:00 id5 8 stop rt56 l3 456
10:15:00 id4 3 start tg84 l7 567
10:17:00 id7 5 start ty69 l4 678
10:21:00 id5 5 stop rt56 l7 678
10:31:00 id1 1 stop sd34 l4 567
我尝试了这个解决方案,但它只有在我指定时间http://www.sqllines.com/postgresql/how-to/datediff时才有效。
谢谢!
解决方案
也许有这样的自我加入:
SELECT
start."Correlation_ID",
extract(epoch from stop."Event_time" - start."Event_time")/60
FROM
some_table AS start
JOIN
some_table AS stop
ON start."Correlation_ID"=finish."Correlation_ID"
AND stop."Event_ID"='stop'
WHERE
start."Event_ID"='start'
;
或与这样的小组:
SELECT
"Correlation_ID",
extract(epoch from
max(CASE "Event_ID" WHEN 'stop' THEN "Event_time" END )
-min(CASE "Event_ID" WHEN 'start' THEN "Event_time" END )
) /60
FROM
some_table
JOIN
grouP BY "Correlation_ID"
;
推荐阅读
- javascript - 选择具有相同 CSS 类和 jQuery 的选项
- reactjs - RN 0.64.0 使用哪种酶适配器?
- flutter - 是否可以更改下划线的长度?
- java - AlarmManager 在指定时间后未唤醒 BroadcastReceiver
- c# - Web 浏览器控制问题 | 图片未正确显示
- javascript - 从 iframe 访问父窗口
- css - 如何更改 Cuba Platform 中的设计?
- json - 415 Unsupported Media Type Fetch POST 请求
- google-cloud-platform - 实例的 GCE 警报策略(n1-standard-8(8 个 vCPU,30 GB 内存)
- row - Webi - 当另一列值为空时隐藏中断中的列