作者cutekid (可爱小孩子)
看板Database
标题Re: [SQL ] 取得一段时间长度并去除重复
时间Fri Dec 13 15:33:24 2019
https://imgur.com/a/pAFmK4s
-- 测资
;with tb1 as (
select *
from( values
('A','08:00:00','08:20:00'),
('B','08:15:00','08:23:00'),
('C','08:21:00','08:26:00'),
('D','08:30:00','08:32:00'),
('E','08:33:00','08:52:00'),
('F','08:39:00','08:42:00'),
('G','08:45:00','08:49:00')
)t(id,st,et)
),
-- 取出断点资料
tb2 as (
select *
from tb1 t1
where not exists (
select * from tb1 where st <= t1.et and et > t1.et
)
),
-- 取得大於等於自己的断点
tb3 as (
select t1.st,t2.et,cnt = count(*) over (partition by t1.id)
from tb1 t1 inner join tb2 t2
on t1.et <= t2.et
)
-- 结果
select st = min(st),et=min(et)
from tb3
group by cnt
order by st
※ 引述《howard7821 (howard7821)》之铭言:
: 标题可能不是很清楚我想表达的
: 目前有个需求是想要计算业务的总通话时长
: 但一个业务同时间可能会与很多客户对话
: 举例来说
: 客户 开始对话时间 结束对话时间
: A 08:00:00 08:20:00
: B 08:15:00 08:23:00
: C 08:21:00 08:26:00
: D 08:30:00 08:32:00
: E 08:33:00 08:52:00
: F 08:39:00 08:42:00
: G 08:45:00 08:49:00
: 以上就是这业务与客户的对话时间表
: 然後想整理成以下资讯
: 1 08:00:00 08:26:00
: 2 08:30:00 08:32:00
: 3 08:33:00 08:52:00
: 也就是对话时间有连贯就合成一笔资料
: 求大神帮小弟解答一下 感谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.26.106.46 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Database/M.1576222406.A.CDB.html
1F:推 howard7821: 感谢解答! 12/13 18:16