我正在努力改进我的查询写作,需要以下方面的帮助......
我有一个包含多个列的表,包括 Operation_Code、Operation_Category、Downtime_In_Minutes、Downtime(以过去 24 小时的百分比表示)。我的结果集的每一行都需要为每个 Operation_Code 和 SUM(Operation_Code 的每次出现次数)计算 SUM(Downtime_minutes)。停止永远是昨天。日期函数和格式返回昨天的日期。由于代码的长度,这在下面的查询中没有显示,但它有效。因此,结果中的每一行应如下所示:
示例结果:
StopDate Op_Code OP_Category Count Downtime (Minutes) % of Last 24
7/18/2021 X123 Grinder 10 720 50%
7/18/2021 A800 Cutter 12 360 25%
7/18/2021 O225 Polisher 5 60 4%
我没有尝试任何聚合的查询基本上是:
Select StopDate,
OpCode,
OpCat
From DTS
Where StopDate = yesterday
基本问题是,我如何对每个唯一的 Operation_Code 的出现次数求和并求和以分钟为单位的总时间?
提前致谢!
答案 0 :(得分:0)
您只是在寻找聚合吗?然后你可以使用窗口函数来获取比率,我猜这是基于停机时间:
Select StopDate, OpCode, OpCat, count(*) as cnt,
sum(Downtime_In_Minutes),
sum(Downtime_In_Minutes) * 1.0 / nullif(sum(Downtime_In_Minutes) over ()) as
From DTS
Where StopDate = yesterday;
我假设您知道如何处理“昨天”,因为您说您已经有了一个查询。
按停止日期分组;