根據連續出現的值進行分組
要統計表中值的連續出現次數,有效的方法是計算行中的差異數字。
考慮以下內容查詢:
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中文網其他相關文章!