最近项目中要出一个按月、周、日统计的报表
某年按月分组:
SELECT A.D as label,NVL(B.NUM,0) AS value
FROM
(
SELECT ROWNUM AS D FROM SYS_UNUSE WHERE ROWNUM < 13
) A
LEFT JOIN
(
SELECT TO_CHAR(T.STARTTIME,'MM') AS D,COUNT(1) AS NUM FROM CALL_HIS T
WHERE T.STARTTIME>=:prStartDate AND T.STARTTIME<:prEndDate
GROUP BY TO_CHAR(T.STARTTIME,'MM')
) B ON A.D=B.D ORDER BY A.D
某月按日分组:
SELECT A.D as label,NVL(B.NUM,0) AS value
FROM
(
SELECT ROWNUM AS D FROM SYS_UNUSE WHERE ROWNUM <= TO_CHAR(LAST_DAY(:prDate),'DD')
) A
LEFT JOIN
(
SELECT TO_CHAR(T.STARTTIME,'MM') AS D,COUNT(1) AS NUM FROM CALL_HIS T
WHERE T.STARTTIME>=:prStartDate AND T.STARTTIME<:prEndDate
GROUP BY TO_CHAR(T.STARTTIME,'MM')
) B ON A.D=B.D ORDER BY A.D
按周统计:
SELECT A.D as label,NVL(B.NUM,0) AS value
FROM
(
SELECT TO_CHAR(:prDate+ROWNUM-1,'yyyy-MM-DD') as D FROM SYS_UNUSE WHERE ROWNUM <= 7
) A
LEFT JOIN
(
SELECT TO_CHAR(T.STARTTIME,'yyyy-MM-DD') AS D,COUNT(1) AS NUM FROM CALL_HIS T
WHERE T.STARTTIME>=:prStartDate AND T.STARTTIME<:prEndDate
GROUP BY TO_CHAR(T.STARTTIME,'yyyy-MM-DD')
) B ON A.D=B.D ORDER BY A.D
说明:SYS_UNUSE表是一个没用的表,跟业务没有任何关系,表里只有100条数据,我这里是足够用了。
分享到:
相关推荐
ORACLE中一个基于角色访问控制的VPD设计方案.pdf
主要介绍了Oracle数据库按时间进行分组统计数据的方法,同时附带了一个在不同时间段内的统计实现,需要的朋友可以参考下
Oracle中分组后拼接分组字符串.pdf
分享一个自己学习和实践的关于Oracle表自动按月分区知识点,已经在项目上线并且有效的方案。
Oracle数据库使用分组函数来对数据进行聚集
Oracle中分组后拼接分组字符串[文].pdf
oracle查询一个月之内数据,例如查询某个月用户使用短信多少跳
oracle 的存储过程和函数的语法 如下
oracle的按月统计sql..............................
ORACLE RAC 集群 配置 写法;在中间件中或应用程序中如何写配置串
NULL 博文链接:https://wangjingyi.iteye.com/blog/1545090
Oracle分组统计
更具客户的需求,编写出客户的sql语句,提供oracle 多线程模板
李兴华老师ORACLE数据库,分组统计和子查询专题深入详解
Oracle函数_JDBC常用写法
Oracle Package有简化应用设计、提高应用性能、实现信息隐藏、子程序重载作用。本文举例说明了Oracle Package中返回游标的写法和调用。
oracle如何实现分组排序和统计、聚集,如何分组求top N,什么是over分析函数,row_number(),rank(),dense_rank()区别又是什么, 如何找到一条记录的前后值,这份文档写得太好了。
oracle笔记分组函数,涉及组函数案例,在使用组函数的过程中注意事项,有具体的案例说明!