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应该相等
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章