我有一个信息表(tbl_results),如下所示:
name | time_in_minutes
-------------
jonny | 14
jonny | 27
jonny | 28
jonny | 56
jonny | 57
jonny | 58
sarah | 12
sarah | 16
sarah | 17
sarah | 24
sarah | 25
我很想知道如何编写一个查询(也许是交叉连接?),它总结了特定时间段内的次数。对于上面的示例,我将使用 10 分钟的计时。所以结果如下。
name | 0-10 | 11-20 | 21-30 | 31-40 | 41-50 | 51-60
jonny | 0 | 1 | 2 | 0 | 0 | 3
sarah | 0 | 3 | 2 | 0 | 0 | 0
我会编写一些代码,但我真的不知道从哪里开始这样的查询。
最佳答案
使用条件聚合:
SELECT
name,
[0-10] = COUNT(CASE WHEN time_in_minutes BETWEEN 0 AND 10 THEN 1 END),
[11-20] = COUNT(CASE WHEN time_in_minutes BETWEEN 0 AND 10 THEN 1 END),
[21-30] = COUNT(CASE WHEN time_in_minutes BETWEEN 0 AND 10 THEN 1 END),
[31-40] = COUNT(CASE WHEN time_in_minutes BETWEEN 0 AND 10 THEN 1 END),
[41-50] = COUNT(CASE WHEN time_in_minutes BETWEEN 0 AND 10 THEN 1 END),
[51-60] = COUNT(CASE WHEN time_in_minutes BETWEEN 0 AND 10 THEN 1 END)
FROM tbl
GROUP BY name
关于sql-server - MSSQL根据时间差计算项目数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40834588/