ホームページ >データベース >mysql チュートリアル >SQL テーブル内の値の連続出現をカウントするにはどうすればよいですか?
連続出現に基づいて値をグループ化する
テーブル内の値の連続出現をカウントするには、行の差を計算するのが効果的な方法です。
次の点を考慮してください。 query:
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;
このサブクエリは、行ごとに 2 つの行番号を生成します:
2 つの行番号を減算することで、名前が変更されるか、同じ名前が明確に連続して出現するたびに増加する「グループ」識別子 (grp) を作成します。
最後のクエリは、この grp に基づいて行をグループ化し、各グループ内の各名前の出現数をカウントします。これにより、望ましい連続出現数が得られます。
+------+------------+ | Name | Repetition | +------+------------+ | A | 2 | | B | 4 | | C | 1 | | B | 2 | +------+------------+
このアプローチでは、行番号の違いをグループ化メカニズムとして利用することで、テーブル内の連続する値を識別する効率的な方法が提供されます。
以上がSQL テーブル内の値の連続出現をカウントするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。