2015年4月9日 天气冷
表gw_log设计如下:
Name Type Nullable Default Comments
------------ ------------- -------- ------- ----------
ID VARCHAR2(50) 消息id
SERVICE_ID VARCHAR2(20) Y 服务ID
REQ_TIME DATE Y 请求时间
INVOKE_TIME DATE Y 调用时间
STATUS CHAR(1) Y '0' 0:失败,1:成功
RESP_TIME DATE Y 响应时间
USER_NAME VARCHAR2(20) Y 用户名
SERVICE_TIME DATE Y 调用服务结束时间
DESCN VARCHAR2(256) Y 描述
统计每天验证通过及不通过的总记录数:
成功的sql语句:
--方式1
select req_time,
sum(decode(status, '0', 1, 0)) fail,
sum(decode(status, '1', 1, 0)) success
from gw_log
group by req_time;
执行结果如下:
当然,用了decode()函数,那也可以用case函数了。
失败的sql语句:
--方式2
select distinct a.req_time, a.fail, b.success
from (select req_time,count(*) fail
from gw_log
where status = '0'
group by req_time) a
right join
(select req_time, count(*) success
from gw_log
where status = '1'
group by req_time) b on a.req_time = b.req_time
【参考:select * from (select * from emp) e cross join (select * from book) b】
执行结果如下:
count 无记录未返回0, 因为有 group by 子句的.
如果是不分组(即没有 Group By) 那是一定会返回一个 0 的.
要让有 分组 的count返回 0 , 则需要使用外连接
参考这篇文章可以解决问题!
--方式3
select *
from (select a.req_time, count(*) success
from gw_log a
where a.status = '1'
group by req_time
union
select b.req_time, count(*) fail
from gw_log b
where b.status = '0'
group by b.req_time) g
执行结果如下: