sql - 创建一个班次摘要,班次跨越 2 天
问题描述
我有一个类似于下面示例的数据集。我需要查询和总结每班的交易数量。问题是轮班周期与一天中的正常时间不一致。
例如。2020 年 1 月 1 日的班次将于 2020 年 1 月 1 日上午 06:00 开始,并于 2020 年 1 月 2 日上午 6:00 结束
下面是一个样本数据集。
| EntityID | TransactionDateTime |
|----------|-------------------------|
| 1 | 2020-01-01 06:53 |
| 1 | 2020-01-01 06:01 |
| 1 | 2020-01-01 13:05 |
| 1 | 2020-01-02 05:15 |
| 1 | 2020-01-02 06:14 |
| 1 | 2020-01-02 08:35 |
| 1 | 2020-01-02 01:42 |
| 2 | 2020-01-01 05:01 |
| 2 | 2020-01-01 06:01 |
| 2 | 2020-01-01 13:12 |
| 2 | 2020-01-02 05:53 |
| 2 | 2020-01-02 08:24 |
期望的结果需要看起来像这样。
| EntityID | Shift Date | Num Of Transactions |
|----------|------------|---------------------|
| 1 | 2020-01-01 | 4 |
| 1 | 2020-01-02 | 3 |
| 2 | 2019-12-31 | 1 |
| 2 | 2020-01-01 | 3 |
| 2 | 2020-01-02 | 1 |
任何帮助将不胜感激。
解决方案
您可以将 6 小时的偏移量添加到交易日期,然后像这样聚合:
select
EntityID,
cast(dateadd(hour, -6, TransactionDateTime) as date) ShiftDate,
count(*) NumOfTransactions
from mytable
group by EntityID, cast(dateadd(hour, -6, TransactionDateTime) as date)
推荐阅读
- .net - 未捕获的翻译错误:java.lang.IllegalArgumentException:已添加:Lokio/AsyncTimeout;
- javascript - 无法读取未定义的属性“AccountNumber”
- java - Spring Gradle 启动 Tomcat 上下文时出错
- c++ - std::launder、std::vector 和 move 仅可构造类型
- ios - 在iphone的“文件”目录中找不到保存的pdf文件
- c++ - 查找混合整数程序的绑定约束
- reactjs - 导航到 react-native 屏幕未定义的道具导航
- javascript - 通过 ES7 装饰器获取方法参数
- angular - 如何根据来自不同应用程序的 url 参数配置路由。
- java - 集成身份验证错误 Microsoft SQL Server 2017 和 Knime