`
dongjun316
  • 浏览: 32843 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

oracle中一个按月分组的写法

阅读更多
最近项目中要出一个按月、周、日统计的报表

某年按月分组:
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数据库按时间进行分组统计数据的方法

    对于按时间段分组查询,可以创建一个包含多个时间点的子查询,然后用`JOIN`操作与原始数据表合并,实现特定时间段内的数据统计。例如,如果要查询过去10天的数据,可以构建一个递归查询来生成过去10天的日期范围,...

    Oracle中分组后拼接分组字符串.pdf

    Oracle 中分组后拼接分组字符串 本文主要介绍了在 Oracle 中如何对分组后的数据进行拼接操作,生成分组字符串。下面将对这个问题进行详细的分析和解释。 首先,我们需要创建一个测试表,并插入一些测试数据。这个...

    ORACLE中一个基于角色访问控制的VPD设计方案.pdf

    【Oracle中的基于角色访问控制(Role-Based Access Control, RBAC)与VPD技术】 Oracle数据库是一种广泛使用的大型关系型数据库管理系统,它提供了多种安全机制来保护数据,包括基于角色的访问控制(RBAC)和虚拟...

    Oracle数据库使用分组函数来对数据进行聚集

    Oracle数据库使用分组函数来对数据进行聚集

    Oracle分组统计

    Oracle 分组统计 Oracle 分组统计是数据库开发中常用的技术之一。它可以根据不同的条件对数据进行分组和聚合统计。分组统计的目的是将数据按照某种条件分组,然后对每个组进行聚合计算,最后输出结果。 分组统计...

    Oracle中分组后拼接分组字符串[文].pdf

    Oracle 中分组后拼接分组字符串 在 Oracle 中,分组后拼接分组字符串是一种常见的操作,用于将分组后的多条记录的某字段进行拼接。下面我们来详细介绍如何实现这种操作。 首先,创建一个测试表 `test`,该表包含三...

    oracle查询一个月之内数据

    根据提供的标题、描述、标签及部分内容,我们可以了解到本篇文章主要关注的是如何在Oracle数据库中查询一个月内的数据。这里的关键在于日期范围的确定以及如何利用Oracle的内置函数来完成这一任务。接下来,我们将...

    Oracle中用GROUPING SETS分组自定义汇总

    这个查询将产生两组结果:一组是按产品ID分组的汇总,另一组是按客户ID和渠道ID分组的汇总。这样,我们既能得到每个产品的总销量,又能得到每个客户在每个渠道上的销售总和,而不需要其他不必要的组合,大大减少了...

    oracle的按月统计sql(一个数据库面试题)

    oracle的按月统计sql..............................

    oracle存储过程和函数写法

    oracle 的存储过程和函数的语法 如下

    oracle RAC 集群配置写法

    Oracle Real Application Clusters (RAC) 是一种允许多个 Oracle 数据库实例同时访问单一数据库的技术,通过这种方式来提高系统的可用性和性能。RAC 的设计目的是为了支持高可用性、可扩展性和易于管理的企业级应用...

    oracle--rollup 和cube分组累计求和

    NULL 博文链接:https://wangjingyi.iteye.com/blog/1545090

    SQL之分组统计和子查询专题

    李兴华老师的ORACLE数据库课程中,对分组统计和子查询进行了深入详解。本课程涵盖了分组统计的重点和难点、子查询的概念和应用场景,以及在实际开发中需要注意的细节。 分组统计 在SQL中,分组统计是对数据进行...

    oracle函数和分组

    在Oracle数据库中,函数和分组是进行数据处理和分析的重要工具。本篇将详细介绍一些常用的Oracle内建函数,特别是字符函数、数字函数以及分组相关的GROUP BY子句和HAVING子句。 首先,我们来看字符函数。字符函数...

    oracle分组排序统计高级用法

    ### Oracle 分组排序统计高级用法详解 #### 一、Oracle分组排序和统计概述 在Oracle数据库中,实现分组排序和统计是一项常见的需求,主要用于处理大量的数据,并从中提取有价值的信息。通过合理运用SQL语句,特别...

    oracle 分组函数

    例如,如果我们有一个订单表,可以按客户分组,然后计算每个客户的总销售额。 二、常见Oracle分组函数 1. COUNT():这个函数用于计算一组数据的数量,可以统计非NULL值或所有记录。 ```sql SELECT customer_id, ...

    学习 oracle 多线程写法

    更具客户的需求,编写出客户的sql语句,提供oracle 多线程模板

    实现 Oracle 连接 SQL Server

    3. **创建数据库链接**:创建一个指向 SQL Server 数据库的数据库链接,以便从 Oracle 数据库访问 SQL Server 数据库的数据: ``` CREATE DATABASE LINK pubs CONNECT TO sa IDENTIFIED BY sa USING 'pubs'; ``` ...

    Oracle Package中返回游标的写法和调用

    Oracle Package有简化应用设计、提高应用性能、实现信息隐藏、子程序重载作用。本文举例说明了Oracle Package中返回游标的写法和调用。

Global site tag (gtag.js) - Google Analytics