根据连续出现的值进行分组
要统计表中值的连续出现次数,有效的方法是计算行中的差异数字。
考虑以下内容查询:
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;
此子查询为每行生成两个行号:
通过将两个行号相减,我们创建一个“组”标识符 (grp),每当名称更改或同一名称明显连续出现时,该标识符就会递增。
最终查询然后根据此 grp 对行进行分组,并计算每个组中每个名称的出现次数。这会产生所需的连续出现次数:
+------+------------+ | Name | Repetition | +------+------------+ | A | 2 | | B | 4 | | C | 1 | | B | 2 | +------+------------+
此方法通过利用行号差异作为分组机制,提供了一种有效的方法来识别表中的连续值。
以上是如何统计SQL表中值的连续出现次数?的详细内容。更多信息请关注PHP中文网其他相关文章!