我有一张每天晚上运行的桌子的快照,希望获得公司停留在特定阶段的总时间。
即公司A在“销售”中停留了2天。公司B在“销售”中为2天,在“谈判”中为1天。 我不在乎“关闭”的日子,因为那时机会会被赢得。
Name Stage Extract_Date
A Sales 2020-07-04
A Sales 2020-07-05
A Closed 2020-07-06
B Sales 2020-07-04
B Sales 2020-07-05
B Negot 2020-07-06
B Closed 2020-07-07
B Closed 2020-07-08
C Sales 2020-07-04
C Sales 2020-07-05
我在开始这个过程时已经很完整了,
SELECT Name, Stage, COUNT(Extract_Date)
FROM Table
GROUP BY Name, Stage
还是窗口函数更合适?
答案 0 :(得分:0)
嗯。 。 。我想你很亲密。假设状态不重复(如您的示例数据中所示):
select name, stage, min(extract_date) as start_date,
lead(min(extract_date)) over (partition by name order by min(extract_date)) as end_date
from t
group by name, stage;
然后,您可以使用诸如datediff()
或timestampdiff()
之类的适当函数来获得所需的差值。