我有有,我想组一个列的表,但只有最后一个系列的它(该表有一个时间戳列一起工作)例如表SQL集团通过定时
Type | Time
=============
A | 1:00
A | 1:05
B | 1:10
C | 1:15
A | 1:20
A | 1:25
A | 1:30
我想这些组做函数(SUM(),MAX(),AVG())他们只获得小组就被打破之前,因此通过选择一个标准组将无法正常工作。
我想是这样的:
Type | count_in_series | MinTime
================================
A | 2 | 1:00
B | 1 | 1:10
C | 1 | 1:15
A | 3 | 1:20
因为谁也不知道当发生变化的方式,给出的数据只是一个样本,以说明这一点。
这可能吗?
解决方案
我用这从下面的答案概念。原来我正在使用的程序不允许使用变量或WITH CTE。下面是一个使用子查询我的解决方案:
SELECT
Type
, max(t_stamp) as maxTime
, min(t_stamp) as minTime
FROM
(SELECT
*
, ROW_NUMBER() OVER (ORDER BY t_stamp desc) - ROW_NUMBER() OVER (PARTITION BY Type ORDER BY t_stamp desc) as grouping
FROM MyTable) as t1
GROUP BY t1.grouping, t1.Type
ORDER BY min(t_stamp) desc
您正在使用哪个数据库管理系统? SQL Server?甲骨文? – GurV
窗口函数如果引擎支持它,Lead()可以帮助您。如果不是,则可以使用用户变量并分配行号并加入row_number + 1 = rowNumber,然后将T1.Type与T2.Type进行比较,当不同的重置计数时相同的加计数。 – xQbert
@GurwinderSingh通过点火客户端SQL express – Evan