首页 > 解决方案 > SQL Server - 获取连续发生数据的计数

问题描述

如何获取 sql server 中数据的并发发生计数。让我通过一个例子来说明。

我有一个数据如下:

在此处输入图像描述

假设我的ID值为 2。在这里,我们可以看到NAME列具有该ID的值“Shyam”,并且值“Shyam”连续出现 3 次。现在我想计算不断发生的“Shyam”。如何在 SQL Server 上编写此查询?

标签: sqlsql-server

解决方案


如果您开始id = 2并且想要连续的名称数量,您可以使用row_number()

select count(*)
from (select t.*,
             row_number() over (order by id) as seqnum,             
             row_number() over (partition by name order by id) as seqnum_name
      from t
      where id >= 2
     ) t
where seqnum = seqnum_name;

min(name)如果您还想要名称,可以添加。

这是有效的,因为序列号仅对于名称相同的初始行是相同的。


推荐阅读