【问题标题】:Counting number of occurrences by particular stage按特定阶段计算发生次数
【发布时间】:2020-08-11 21:50:04
【问题描述】:

我有一张桌子每晚运行的快照,我希望了解一家公司在特定阶段停留的总时间。

即公司 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

或者窗口函数更合适?

【问题讨论】:

  • 只计算(不同的 extract_date)
  • SELECT Name, COUNT(Extract_Date) FROM NAMES where Stage!='Negot' GROUP BY Name ;

标签: sql snowflake-cloud-data-platform


【解决方案1】:

嗯。 . .我认为你很接近。假设状态不重复(如您的示例数据):

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() 来获得您想要的差异。

【讨论】:

  • 这将使我获得我认为的大部分内容,并且我可以进一步汇总。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-07
  • 2017-05-26
  • 1970-01-01
  • 1970-01-01
  • 2021-12-16
相关资源
最近更新 更多