建表
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 |