SQL计数按数字序列分组

问题描述

如果您的DBMS支持窗口功能(例如sql Server 2005+)

SELECT id,
       count(*) AS res
FROM   (SELECT *,
               [pNum] - ROW_NUMBER() OVER (PARTITION BY [id] ORDER BY [pNum]) AS Grp
        FROM   YourTable) T
GROUP  BY id,
          Grp

SQL小提琴

解决方法

我有一个这样的SQL表:

id      pNum
-----   --------
100     12
100     13
100     15
100     16
100     17
200     18
200     19
300     20
300     21
300     25

我想按id和pNum序列分组,并计算行数。这样的结果。

id      res
-----   --------
100     2
100     3
200     2
300     2
300     1

关于如何做的任何想法?