随着时间的推移按相似类别分组
Grouping by similar categories over time
我四处寻找了一会儿,但什么也没找到。
我有一个 table 看起来像这样:
DATE | Shift | Parts Used
1/1/15 1:15.....1........1
1/1/15 2:06.....1........2
1/1/15 3:45.....1........3
1/1/15 7:33.....2........1
1/1/15 8:14.....2........2
1/1/15 9:00.....2........3
1/1/15 23:01....1........1
1/1/15 23:55....1........2
我想按每个班次分组。不幸的是,轮班有时会在周一早上结束并在周一晚上重新开始(有时我们的 12 小时轮班并不完全是 12 小时)。有没有一种方法可以单独按班次分组,基本上按班次分组直到班次改变,即使我的日子是一样的(我的实际列也包含时间)?我可以编写一个循环来分析数据,但是从 sql 获取它会很棒。
日期是排序行。班次不能重叠。
希望我的结果是这样的
DATE | Shift | AVG parts used
1/1/15.....1........2
1/1/15.....2........2
1/1/15.....1........1.5
编辑****** 具有预期结果的最坏情况
DATE | Shift | AVG parts used
1/1/15.....1........1.8
1/1/15.....2........2
我假设第 1 班应该从午夜开始,第 2 班从中午开始,但有时会延迟一段时间。如果这些假设为真,则此查询应该有效。我创建了一个名为 @ShiftFudgeHours 的变量来说明轮班开始时间通常有多远。根据您的数字进行调整。从你的样本来看,1 小时似乎足够了,但你可以轻松地增加它。
declare @shiftFudgeHours int = 1
select convert(date, DATEADD(hh, @shiftFudgeHours, [date]) ) as [date]
,[shift]
,avg(convert(float, parts)) as AvgParts
from Table1
group by convert(date, DATEADD(hh, @shiftFudgeHours, [date]) ), [shift]
order by convert(date, DATEADD(hh, @shiftFudgeHours, [date]) ), [shift]
我四处寻找了一会儿,但什么也没找到。
我有一个 table 看起来像这样:
DATE | Shift | Parts Used
1/1/15 1:15.....1........1
1/1/15 2:06.....1........2
1/1/15 3:45.....1........3
1/1/15 7:33.....2........1
1/1/15 8:14.....2........2
1/1/15 9:00.....2........3
1/1/15 23:01....1........1
1/1/15 23:55....1........2
我想按每个班次分组。不幸的是,轮班有时会在周一早上结束并在周一晚上重新开始(有时我们的 12 小时轮班并不完全是 12 小时)。有没有一种方法可以单独按班次分组,基本上按班次分组直到班次改变,即使我的日子是一样的(我的实际列也包含时间)?我可以编写一个循环来分析数据,但是从 sql 获取它会很棒。
日期是排序行。班次不能重叠。
希望我的结果是这样的
DATE | Shift | AVG parts used
1/1/15.....1........2
1/1/15.....2........2
1/1/15.....1........1.5
编辑****** 具有预期结果的最坏情况
DATE | Shift | AVG parts used
1/1/15.....1........1.8
1/1/15.....2........2
我假设第 1 班应该从午夜开始,第 2 班从中午开始,但有时会延迟一段时间。如果这些假设为真,则此查询应该有效。我创建了一个名为 @ShiftFudgeHours 的变量来说明轮班开始时间通常有多远。根据您的数字进行调整。从你的样本来看,1 小时似乎足够了,但你可以轻松地增加它。
declare @shiftFudgeHours int = 1
select convert(date, DATEADD(hh, @shiftFudgeHours, [date]) ) as [date]
,[shift]
,avg(convert(float, parts)) as AvgParts
from Table1
group by convert(date, DATEADD(hh, @shiftFudgeHours, [date]) ), [shift]
order by convert(date, DATEADD(hh, @shiftFudgeHours, [date]) ), [shift]