【发布时间】:2018-09-14 06:11:48
【问题描述】:
我有一个包含电力消耗数据的 SQL 表。 现有列:日期、名称和值。这是一个示例:
DT Tag Value
2018-09-13 17:09:32.553 Siemens.MDBPLC.elDCS2.elDCS2p 30559.01953125
2018-09-13 18:09:32.557 Siemens.MDBPLC.elDCS2.elDCS2p 30559.01953125
2018-09-13 19:09:32.567 Siemens.MDBPLC.elDCS2.elDCS2p 30559.01953125
2018-09-13 20:09:32.580 Siemens.MDBPLC.elDCS2.elDCS2p 30559.01953125
2018-09-13 21:09:32.583 Siemens.MDBPLC.elDCS2.elDCS2p 30559.01953125
2018-09-13 22:09:32.593 Siemens.MDBPLC.elDCS2.elDCS2p 30559.01953125
2018-09-13 23:09:32.597 Siemens.MDBPLC.elDCS2.elDCS2p 30559.01953125
2018-09-14 00:09:32.603 Siemens.MDBPLC.elDCS2.elDCS2p 30559.01953125
2018-09-14 01:09:32.603 Siemens.MDBPLC.elDCS2.elDCS2p 30559.01953125
2018-09-14 02:09:32.603 Siemens.MDBPLC.elDCS2.elDCS2p 30559.01953125
2018-09-14 03:09:32.610 Siemens.MDBPLC.elDCS2.elDCS2p 30559.01953125
2018-09-14 04:09:32.627 Siemens.MDBPLC.elDCS2.elDCS2p 30559.01953125
2018-09-14 05:09:32.640 Siemens.MDBPLC.elDCS2.elDCS2p 30559.01953125
2018-09-14 06:09:32.643 Siemens.MDBPLC.elDCS2.elDCS2p 30559.01953125
2018-09-14 07:09:32.650 Siemens.MDBPLC.elDCS2.elDCS2p 30559.01953125
2018-09-14 08:09:32.663 Siemens.MDBPLC.elDCS2.elDCS2p 30559.01953125
2018-09-14 09:09:32.677 Siemens.MDBPLC.elDCS2.elDCS2p 30559.01953125
2018-09-14 10:09:32.677 Siemens.MDBPLC.elDCS2.elDCS2p 30559.01953125
2018-09-14 11:09:32.677 Siemens.MDBPLC.elDCS2.elDCS2p 30559.01953125
2018-09-14 12:09:32.680 Siemens.MDBPLC.elDCS2.elDCS2p 30559.01953125
每小时都会向表中插入值。
我需要创建轮班报告,我们可以在其中按轮班小时数的平均值查看哪个班次消耗的能源。 我们有 4 个班次:
2019-09-13 07:00-19:00 A
2019-09-13 19:00-07:00 B
2019-09-14 07:00-19:00 C
2019-09-14 19:00-07:00 D
因此我需要这样的输出:
Date Shift Value
2019-09-13 07:00 A 30559.01953125
2019-09-13 19:00 B 30559.01953125
2019-09-14 07:00 C 30559.01953125
他们使用 MS SQL 2012。不能改变结构或任何东西,只能从数据库中选择数据。
【问题讨论】:
-
请提供样本数据和预期结果。当你这样做时,你会得到更快、更准确的答案
-
您似乎每天只有 2 个 12 小时轮班。为什么称这为“四班倒”?
-
因为在我们工厂我们有 4 班 2 天 - A B C D,这就是为什么班次报告应该涵盖所有 4 班
-
在您的输出中,Value 是每班所有每小时样本的 MIN、MAX 还是 AVG?
-
您如何决定何时从“A”开始?这有关系吗?
标签: sql-server datetime group-by