求个sql的统计的写法

[复制链接]
查看11 | 回复9 | 2015-6-30 16:43:05 | 显示全部楼层 |阅读模式
有一个表现在要统计每分钟表的记录数, transreorder(tm_smp
VARCHAR2(20) default ' ' not null,时间字段都是这样显示的(20150520092841)usr_no
VARCHAR2(20) default ' ' not null,
hold_no VARCHAR2(20) default ' ' not null,
fee_amt NUMBER(13,4) default 0 not null,
acc_flg VARCHAR2(1) default '0' not null

进行类型转换一直失败,请问下这个sql如何实现/


回复

使用道具 举报

千问 | 2015-6-30 16:43:05 | 显示全部楼层
select substr(tm_smp,1,12),count(tm_smp)
from transreorder
group by substr(tm_smp,1,12);
不过,如果你的表很大,而且这个操作进行的很频繁,可以考虑在tm_smp列上建函数索引。函数就是sub(tm_smp,1,12).
同时把代码改为试试:
select substr(tm_smp,1,12),count(substr(tm_smp,1,12))
from transreorder
group by substr(tm_smp,1,12);

回复

使用道具 举报

千问 | 2015-6-30 16:43:05 | 显示全部楼层
bfc99 发表于 2015-7-2 17:39
select substr(tm_smp,1,12),count(tm_smp)
from transreorder
group by substr(tm_smp,1,12);

恩,如果没有有的1分钟里数据为空改怎么显示,你这个办法不错,我一直进行转换,好麻烦
回复

使用道具 举报

千问 | 2015-6-30 16:43:05 | 显示全部楼层
tlzybzwqmeinv 发表于 2015-7-2 17:48
恩,如果没有有的1分钟里数据为空改怎么显示,你这个办法不错,我一直进行转换,好麻烦

建一个有每一分钟的中间表,然后用这个中间与你最后的结果做外连接。
比如以下SQL就可以构建一个有2015年5月20日每一分钟的中间表:
select to_char(to_date('2015-05-20','yyyy-mm-dd')+(rownum-1)/1440,'yyyymmddhh24mi') dt_m from dual connect by rownum<=1440;
回复

使用道具 举报

千问 | 2015-6-30 16:43:05 | 显示全部楼层
bfc99 发表于 2015-7-2 18:00
建一个有每一分钟的中间表,然后用这个中间与你最后的结果做外连接。
比如以下SQL就可以构建一个有201 ...

只能使用中间表吗,这个查询很频繁的每分钟一次显示到前台,效率怎么样。
回复

使用道具 举报

千问 | 2015-6-30 16:43:05 | 显示全部楼层
tlzybzwqmeinv 发表于 2015-7-2 19:09
只能使用中间表吗,这个查询很频繁的每分钟一次显示到前台,效率怎么样。

是否只需要显示最近一分钟的?
回复

使用道具 举报

千问 | 2015-6-30 16:43:05 | 显示全部楼层
bfc99 发表于 2015-7-2 19:16
是否只需要显示最近一分钟的?

第1分钟,第2分钟,第3分钟....每分钟都统计,有可能第二分钟中没有交易进来,这时这分钟记录数为0,不会显示的。我现在每分钟都显示到前台展示,为空的话就以0显示。
回复

使用道具 举报

千问 | 2015-6-30 16:43:05 | 显示全部楼层
tlzybzwqmeinv 发表于 2015-7-2 19:23
第1分钟,第2分钟,第3分钟....每分钟都统计,有可能第二分钟中没有交易进来,这时这分钟记录数为0,不会 ...

数据是否只会新增。比如说,我在10:01分时,统计的10:00至10:01的记录数,等我到10:20时,再统计时,10:00至10:01的记录数是否会变?
回复

使用道具 举报

千问 | 2015-6-30 16:43:05 | 显示全部楼层
tlzybzwqmeinv 发表于 2015-7-2 19:23
第1分钟,第2分钟,第3分钟....每分钟都统计,有可能第二分钟中没有交易进来,这时这分钟记录数为0,不会 ...

那就只要更新最后一分钟
回复

使用道具 举报

千问 | 2015-6-30 16:43:05 | 显示全部楼层
现在需求又变了,这是个坐标交易图表。需要统计每分钟的表里的数据,前台数据一致传到数据库,如果在这一分钟有交易就传到这张表里,某分钟没有交易的话,数据库不会传进去。这个查询
只能查到表里有时间的数据,比如说我可以查到201507031041;201507031042,201507031043(这分因为没有交易所以表里不存在)...,现在需要查询每分钟的表的记录数,不存在这分钟的则以0表示.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行