首頁 > 資料庫 > mysql教程 > 如何計算資料庫列中連續出現的值?

如何計算資料庫列中連續出現的值?

Patricia Arquette
發布: 2025-01-05 15:16:43
原創
706 人瀏覽過

How to Count Consecutive Value Occurrences in a Database Column?

如何計算表列中連續出現的次數

處理表中的資料時,計算連續出現的次數可能很有用某個值在特定列中連續出現的次數。例如,如果表格包含代表員工姓名的列,您可能會想知道同一員工姓名在一行中出現的次數。

問題

考慮下表:

create table #t (Id int, Name char)

insert into #t values
(1, 'A'),
(2, 'A'),
(3, 'B'),
(4, 'B'),
(5, 'B'),
(6, 'B'),
(7, 'C'),
(8, 'B'),
(9, 'B')
登入後複製

目標是計算「Name」中每個數值連續出現的次數 柱子。所需的輸出是:

Name Repetition
A 2
B 4
C 1
B 2

解決方案

解決此問題的一種方法是使用行號的概念,然後計算它們之間的差異來識別連續出現。以下查詢示範了這種方法:

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;
登入後複製

說明

查詢中的子查詢:

(select t.*,
             (row_number() over (order by id) -
              row_number() over (partition by name order by id)
             ) as grp
      from t
     )
登入後複製

計算每個的行編號「t」表中的行。 row_number() 函數為每一行分配一個連續的編號,而partition by 子句確保為「Name」列中的每個不同值重設行號。這會產生「grp」列,該列指示「Name」和「Id」的每個組合的連續出現的群組。

接著外部查詢會依照「grp」欄位對結果分組並計算每個「grp」和「名稱」組合出現的次數。這提供了最終結果,該結果計算「名稱」列中每個值的連續出現次數。

透過利用行號之間的差異,該方法準確地確定指定列中值的連續出現次數並產生所需的輸出。

以上是如何計算資料庫列中連續出現的值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板