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