Iva*_*ich 6 oracle oracle-10g count
我正在使用 Oracle 数据库 10g。有一个包含有关客户信息的表格:
+----+------+---------------------+
| id | name | registered_at |
+----+------+---------------------+
| 1 | Ivan | 2016/08/01 15:09:01 |
| 2 | Alex | 2016/08/01 16:30:21 |
| 3 | John | 2016/08/01 16:31:05 |
| 4 | Hugo | 2016/08/01 15:08:00 |
| 5 | Anna | 2016/08/01 15:42:23 |
+----+------+---------------------+
Run Code Online (Sandbox Code Playgroud)
如何按regitered_at
给定间隔(以分钟为单位)按列计算记录?
例如:间隔 = 10 分钟,日期时间范围从2016/08/01 15:00:00
到2016/08/01 17:00:00
. 结果应该是这样的:
+---------------------+---------------------+-----+
| start_ | end_ | cnt |
+---------------------+---------------------+-----+
| 2016/08/01 15:00:00 | 2016/08/01 15:10:00 | 2 |
| 2016/08/01 15:40:00 | 2016/08/01 15:50:00 | 1 |
| 2016/08/01 16:30:00 | 2016/08/01 16:40:00 | 2 |
+---------------------+---------------------+-----+
Run Code Online (Sandbox Code Playgroud)
桌子:
create table clients (
id number(10) not null,
name varchar2(30) not null,
registered_at DATE
);
Run Code Online (Sandbox Code Playgroud)
数据:
insert into clients
(id, name, registered_at)
values
(1, 'Ivan', to_date('2016/08/01 15:09:01', 'YYYY/MM/DD HH24:MI:SS'));
insert into clients
(id, name, registered_at)
values
(2, 'Alex', to_date('2016/08/01 16:30:21', 'YYYY/MM/DD HH24:MI:SS'));
insert into clients
(id, name, registered_at)
values
(3, 'John', to_date('2016/08/01 16:31:05', 'YYYY/MM/DD HH24:MI:SS'));
insert into clients
(id, name, registered_at)
values
(4, 'Hugo', to_date('2016/08/01 15:08:00', 'YYYY/MM/DD HH24:MI:SS'));
insert into clients
(id, name, registered_at)
values
(5, 'Anna', to_date('2016/08/01 15:42:23', 'YYYY/MM/DD HH24:MI:SS'));
Run Code Online (Sandbox Code Playgroud)
variable interval_minutes number;
exec :interval_minutes := 10;
select
trunc(registered_at, 'HH24')
+ trunc(to_char(registered_at,'mi')/:interval_minutes)*:interval_minutes/1440,
count(*)
from
clients
group by
trunc(registered_at, 'HH24')
+ trunc(to_char(registered_at,'mi')/:interval_minutes)*:interval_minutes/1440
order by
1
;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1558 次 |
最近记录: |