首页 >数据库 >mysql教程 >如何统计SQL表中值的连续出现次数?

如何统计SQL表中值的连续出现次数?

Barbara Streisand
Barbara Streisand原创
2025-01-05 15:40:40142浏览

How to Count Consecutive Occurrences of Values in a SQL Table?

根据连续出现的值进行分组

要统计表中值的连续出现次数,有效的方法是计算行中的差异数字。

考虑以下内容查询:

select name, count(*) 
from (
    select t.*,
           (row_number() over (order by id) -
            row_number() over (partition by name order by id)
           ) as grp
    from t
) t
group by grp, name;

此子查询为每行生成两个行号:

  • row_number() over (order by id):基于整体行顺序的连续数字。
  • row_number() over(按名称顺序按 id 分区):特定于每个唯一的序列号名称。

通过将两个行号相减,我们创建一个“组”标识符 (grp),每当名称更改或同一名称明显连续出现时,该标识符就会递增。

最终查询然后根据此 grp 对行进行分组,并计算每个组中每个名称的出现次数。这会产生所需的连续出现次数:

+------+------------+
| Name | Repetition |
+------+------------+
| A    |          2 |
| B    |          4 |
| C    |          1 |
| B    |          2 |
+------+------------+

此方法通过利用行号差异作为分组机制,提供了一种有效的方法来识别表中的连续值。

以上是如何统计SQL表中值的连续出现次数?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn