sql 統計連續輸出次數

建表

create table signal
(
    value           smallint,
    record_datetime timestamp default now()
);

插入隨機數

insert into signal(value)
values (trunc(random() * (10 - 1)));
  • ceil函數:得到不小於參數的最小的整數,floor:得到不大於參數的最大整數,trunc:截斷

統計連續出現次數

select value, row1 - row2, count(*)
from (
         select value,
                row_number() over (order by record_datetime)                    row1,
                row_number() over (partition by value order by record_datetime) row2
         from signal) a
group by value, row1 - row2
  • partition by 先按照某個字段分區,再排序。例:value裏面有多個18和17,那麼就是
value row_number
18 1
18 2
18 3
18 4
17 1
17 2
17 3
17 4
  • 如果是連續出現那麼row1-row2應該相等
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章