with tmp_t as( select 1 as id,to_date('2014-06-01','yyyy-mm-dd') as v_date,1 as v_num from dual union all select 1,to_date('2014-06-02','yyyy-mm-dd') ,2 a from dual union all select 1,to_date('2014-06-12','yyyy-mm-dd') ,3 a from dual union all select 1,to_date('2014-06-22','yyyy-mm-dd') ,4 a from dual union all select 1,to_date('2014-05-22','yyyy-mm-dd') ,3 a from dual union all select 1,to_date('2014-03-22','yyyy-mm-dd') ,7 a from dual union all select 2,to_date('2014-06-02','yyyy-mm-dd') ,2 a from dual union all select 2,to_date('2014-06-07','yyyy-mm-dd') ,5 a from dual union all select 2,to_date('2014-06-17','yyyy-mm-dd') ,3 a from dual union all select 2,to_date('2014-07-17','yyyy-mm-dd') ,3 a from dual union all select 2,to_date('2014-08-17','yyyy-mm-dd') ,8 a from dual ) select aa.id, sum(aa.current_num), sum(aa.month_num), sum(aa.year_num) from (select id, sum(case when trunc(v_date) = trunc(to_date('2014-06-02', 'yyyy-mm-dd')) then v_num else 0 end) current_num, sum(v_num) month_num, max(0) year_num from tmp_t where 1 = 1 and v_date < last_day(to_date('2014-06-02', 'yyyy-mm-dd')) + 1 and v_date >= trunc(add_months(last_day(to_date('2014-06-02', 'yyyy-mm-dd')), -1) + 1) group by id union all select id, max(0) current_num, max(0) month_num, sum(v_num) year_num from tmp_t where 1 = 1 and v_date< add_months(trunc(to_date('2014-06-02', 'yyyy-mm-dd'),'yyyy'),12) and v_date >= trunc(to_date('2014-06-02', 'yyyy-mm-dd'), 'yyyy') group by id) aa group by aa.id
结果如下:
欢迎提出更好的写法。
全文完。
相关推荐
### SQL语句:查询当月、当年数据及本周数据 #### 概述 在数据库管理与数据分析领域,针对特定时间段内的数据查询是非常常见的需求之一。本文将详细介绍如何使用SQL语句来查询当前月份、当年以及本周的数据。这些...
Oracle数据库提供了一种强大的数据分组和统计功能,这在处理时间序列数据时尤其有用。在本示例中,我们关注的是如何利用SQL查询按时间进行分组统计数据。以下将详细介绍几种常见的分组方法及其应用。 1. **按年份...
Oracle 分组统计 Oracle 分组统计是数据库开发中常用的技术之一。它可以根据不同的条件对数据进行分组和聚合统计。分组统计的目的是将数据按照某种条件分组,然后对每个组进行聚合计算,最后输出结果。 分组统计...
文档里包含Oracle 11G统计信息自动收集及调整,可以使用优化数据库性能,不合理的统计信息会影响数据库性能
oracle的按月统计sql..............................
### ORACLE 数据库的统计数据及优化 #### 一、引言 在当今信息化时代,数据库管理系统(DBMS)作为数据管理的核心工具,其性能优化尤为重要。Oracle数据库作为一种广泛使用的DBMS,其性能优劣直接影响到企业的业务...
Oracle统计一天内每小时的数据量。在某小时内有数据,该时间段会被统计出来;该时间段内没有交易,该时间段不会被统计出来,默认为0即可
ORACLE表空间大小统计语句,比较详细的。。。。
在SQL和Oracle数据库管理系统中,有时我们需要统计数据库中包含的表的数量以及获取具体的表名。以下是如何在两者中实现这一目标的详细步骤。 在SQL中,我们通常使用系统对象表来获取相关信息。`sys.objects`是SQL ...
### 提高Oracle数据库的查询统计速度 在现代企业级应用中,Oracle数据库因其稳定性和强大的功能而被广泛采用。然而,在处理大量数据时,如何优化查询统计速度成为了提高整体系统性能的关键因素之一。本文将围绕如何...
ORACLE 数据库中如何统计表记录数的过程说明
### Oracle 11g 自动收集统计信息的时间 在Oracle 11g中,自动收集统计信息是一项重要的数据库维护任务,它有助于优化查询性能并确保数据的准确性。本篇文章将详细介绍Oracle 11g如何自动收集统计信息以及如何管理...
### Oracle Statistic 统计信息详解 #### 一、Statistic的重要性与作用 在Oracle数据库管理中,**Statistic**起着至关重要的作用。它主要负责收集关于数据库对象的详细信息,并将这些信息存储在数据字典中。这些...
Oracle 12c 32位简易客户端是一个轻量级的数据库连接工具,适用于那些只需要基本数据库访问功能的用户。这个客户端包含了SQL*Plus、ODBC驱动程序以及其他基础组件,可以满足开发人员、系统管理员以及对Oracle数据库...
在Oracle数据库中,计算某个日期属于其前一个月中的第几个自然周是一项常见的需求,这在数据分析、报表生成或业务逻辑处理中很有用。这个任务可以通过编写一个自定义函数来实现,例如提供的`to_week_by_month.fnc`...
"简易的Oracle作业"可能指的是在Oracle环境中执行的一些基本的数据库管理和维护任务,这些任务可能包括数据导入导出、查询优化、表空间管理、备份与恢复等。 一、数据导入导出 Oracle提供了多种工具进行数据导入...
"简易Oracle客户端连接"就是这样一个工具,它免去了安装完整Oracle客户端的复杂过程,提供了一种绿色、简洁且实用的解决方案。 这个工具的核心功能包括: 1. **SQL语句执行**:开发者可以输入SQL查询语句,工具会...
Oracle简单客户端配置64位教程 Oracle数据库是一个广泛使用的数据库管理系统,尤其在企业级应用中占据重要地位。在某些情况下,我们可能并不需要完整的Oracle数据库服务器环境,而是只需要一个能够连接到远程Oracle...
标题“Oracle 获取某日期属于一年中的第几个自然周”指的是在Oracle数据库系统中,通过SQL查询来确定一个特定日期在当年是第几周的问题。在实际业务中,这样的功能可能用于统计、报告或者数据分析,例如,公司可能...
这个一个简易的Oracle客户端配置,如果你习惯使用PLSQL,但又闲Oracle客户端太大的话可以试试这个,是绿色版的,里面附环境变量配置,只是修改下\oracle10g\network\admin下的tnsnames.ora文件就可以使用,非常节省...