【发布时间】:2018-10-01 08:12:29
【问题描述】:
我有一个具有以下架构的表:
ID | FirstName | Surname | TransmissionID | CaptureDateTime
1 | Billy | Goat | ABCDEF | 2018-09-20 13:45:01.098
2 | Jonny | Cash | ABCDEF | 2018-09-20 13:45.01.108
3 | Sally | Sue | ABCDEF | 2018-09-20 13:45:01.298
4 | Jermaine | Cole | PQRSTU | 2018-09-20 13:45:01.398
5 | Mike | Smith | PQRSTU | 2018-09-20 13:45:01.498
有超过 70,000 条记录,它们存储传输到 Web 服务的日志。我想知道的是我将如何编写一个脚本来选择不同的TransmissionID 值并显示最早的CaptureDateTime 记录和最新记录之间的时间跨度?本质上,我想看看网络服务读取和写入的记录速率。
甚至可以在单个SELECT 语句中执行此操作,还是我应该只创建一个存储过程或在代码中报告?对于这种查询,除了SELECT DISTINCT TransmissionID,我不知道从哪里开始。
这是我目前所拥有的(我卡在时间计算上)
SELECT DISTINCT [TransmissionID],
COUNT(*) as 'Number of records'
FROM [log_table]
GROUP BY [TransmissionID]
HAVING COUNT(*) > 1
不确定如何使用相同的TransmissionID 获取第一条记录和最后一条记录之间的差异我希望得到如下结果集:
TransmissionID | TimeToCompletion | Number of records |
ABCDEF | 2.001 | 5000 |
【问题讨论】:
-
这里不需要做SELECT DISTINCT,GROUP BY不返回重复项。
-
max(CaptureDateTime) - min(CaptureDateTime)?
标签: sql sql-server datetime group-by