`
zhanghteye
  • 浏览: 51247 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Oracle---按各种时间分组统计的sql

阅读更多
如下表table1:

日期(exportDate)               数量(amount)
--------------                    -----------

14-2月 -08                       20
10-3月 -08                       2
14-4月 -08                       6
14-6月 -08                       75
24-10月-09                      23
14-11月-09                      45
04-8月 -10                       5
04-9月 -10                       44
04-10月-10                      88




注意:为了显示更直观,如下查询已皆按相应分组排序

1.按年份分组

select to_char(exportDate,'yyyy'),sum(amount) from table1 group by to_char(exportDate,'yyyy')

order by to_char(exportDate,'yyyy');

年份      数量

-----------------------------
2008    103

2009    68
2010    137



2.按月份分组

select to_char(exportDate,'yyyy-mm'),sum(amount) from table1 group by to_char(exportDate,'yyyy-mm')

order by to_char(exportDate,'yyyy-mm');

月份           数量

-----------------------------

2008-02    20
2008-03    2
2008-04    6
2008-06    75
2009-10    23
2009-11    45
2010-08    5
2010-09    44
2010-10    88



3.按季度分组

select to_char(exportDate,'yyyy-Q'),sum(amount) from table1 group by to_char(exportDate,'yyyy-Q')

order by to_char(exportDate,'yyyy-Q');

季度          数量

------------------------------

2008-1    22
2008-2    81
2009-4    68
2010-3    49
2010-4    88



4.按周分组

select to_char(exportDate,'yyyy-IW'),sum(amount) from table1 group by to_char(exportDate,'yyyy-IW')

order by to_char(exportDate,'yyyy-IW');

周             数量

------------------------------

2008-07    20
2008-11    2
2008-16    6
2008-24    75
2009-43    23
2009-46    45
2010-31    5
2010-35    44
2010-40    88



补充 :

按季度分组还有个比较笨的方法(参考网络资源)

select  to_char(exportDate,'yyyy'),
sum(decode(to_char(exportDate,'mm'),'01',amount,'02',amount,'03',amount,0)) as 第一季,
sum(decode(to_char(exportDate,'mm'),'04',amount,'05',amount,'06',amount,0)) as 第二季,
sum(decode(to_char(exportDate,'mm'),'07',amount,'08',amount,'09',amount,0)) as 第三季,
sum(decode(to_char(exportDate,'mm'),'10',amount,'11',amount,'12',amount,0)) as 第四季

from table1

group by to_char(exportDate,'yyyy');

年份        第一季     第二季     第三季     第四季

--------------------------------------------------

2009         0            0            0          68
2010         0            0            49        88
2008         22          81          0          0

分享到:
评论

相关推荐

    Oracle数据库按时间进行分组统计数据的方法

    在本示例中,我们关注的是如何利用SQL查询按时间进行分组统计数据。以下将详细介绍几种常见的分组方法及其应用。 1. **按年份分组**: 使用`to_char()`函数将日期字段转换为年份格式,并结合`GROUP BY`子句进行分组...

    oracle-sql.rar_oracle

    首先,"oracle常用经典sql查询.doc"很可能包含了各种常见的SQL查询语句,这些语句对于理解和掌握Oracle SQL的基础至关重要。这可能包括了如何选择(SELECT)、插入(INSERT)、更新(UPDATE)和删除(DELETE)数据,...

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

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

    oracle-sql资料必备

    Oracle SQL是数据库管理员、开发人员和分析师在处理Oracle数据库系统时不可或缺的工具。它是一种用于查询、更新和管理Oracle数据库的强大语言。以下是一些关于Oracle SQL的重要知识点,这些知识点涵盖了从基础到高级...

    oracle-sql(两本pdf)

    第一本书“SQL-1.pdf”可能涵盖了SQL的基础概念,包括: 1. 数据库基础:介绍数据库是什么,以及Oracle数据库的体系结构,如表空间、段、区和块等。 2. SQL语法:讲解如何创建、修改和删除数据库对象,如表格、视图...

    Oracle分组统计

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

    使用Oracle的SQL函数实现工作日和节假日分组统计.pdf

    使用Oracle的SQL函数实现工作日和节假日分组统计 本文介绍了使用Oracle的SQL函数来实现工作日和节假日的分组统计,通过对工作日和节假日的判断和统计,可以更好地合理调度人力物力资源,制定节假日劳务补贴政策。...

    大连华信Oracle-Sql.rar 课件

    3. **分组和聚合函数**:`GROUP BY`语句用于将数据按列进行分组,而`COUNT()`, `SUM()`, `AVG()`, `MAX()`, `MIN()`等聚合函数则对每个分组计算统计信息。 4. **视图**:视图是基于一个或多个表的虚拟表,它不存储...

    Oracle PL-SQL 对应 hadoop hive 、 phoenix中常用的对应函

    - Oracle PL-SQL: 包含 `SYSDATE`(获取当前日期时间)、`ADD_MONTHS`(增加月份)、`EXTRACT`(提取日期部分)等。在 Oracle 中,可以使用 `TO_DATE` 和 `TO_CHAR` 进行日期格式转换。 - Hadoop Hive: 提供类似 `...

    oracle-plsql.zip_oracle_pl sql 分组查询_plsql_plsql 分组查询

    2. **分组查询**:在SQL中,GROUP BY语句用于根据一个或多个列对结果进行分组,常与聚合函数(如COUNT、SUM、AVG、MAX和MIN)一起使用,以便对每个分组执行统计计算。 3. **多表查询**:通过JOIN操作,可以从两个或...

    Oracle SQL(SQL for Oracle)

    3. **SELECT查询**:Oracle SQL的查询语法丰富,可以使用WHERE子句进行条件过滤,GROUP BY和HAVING子句进行分组统计,ORDER BY子句进行排序,以及JOIN操作连接多个表。 4. **视图**:视图是虚拟表,基于一个或多个...

    《精通Oracle SQL 第2版》PDF版本下载.txt

    - **GROUP BY子句**: 将结果集按一个或多个列进行分组。 - **HAVING子句**: 类似于WHERE子句,但作用于GROUP BY子句后的结果集。 - **JOIN操作**: 将多个表中的数据结合在一起显示。 #### 函数与表达式 - **聚合...

    Oracle Press - Oracle Database 11g SQL

    11. **数据类型**:详述Oracle支持的各种数据类型,如数值型、字符型、日期时间型、二进制数据等,以及它们在实际应用中的选择。 12. **异常处理**:介绍在PL/SQL中如何捕获和处理错误,以及使用RAISE语句和异常...

    OracleSQLDeveloper

    6. **报表和图表**:SQL Developer可以生成各种报表,包括数据的统计报告、性能分析报告等,还可以以图表形式展示数据,便于数据分析和决策。 7. **版本控制**:集成的版本控制系统允许团队成员协作开发数据库,...

    Oracle官方文档合集-SQL参考手册

    Oracle官方文档合集中的SQL参考手册是一份极其重要的资源,对于任何希望深入理解和熟练使用Oracle数据库系统的人员来说,都是不可或缺的工具。这份手册详细阐述了Oracle SQL语言的各个方面,包括其语法、功能以及...

    Oracle官方文档CHM合集-SQL参考手册

    2. 数据类型:手册会详细介绍Oracle支持的数据类型,包括数值类型(如NUMBER)、字符类型(如VARCHAR2、CHAR)、日期时间类型(如DATE)、二进制数据类型(如BLOB)等,以及如何在SQL语句中使用它们。 3. 查询语句...

    Oracle SQL:经典练习题(附答案)

    6. **排序与分组**:ORDER BY子句用于对结果集进行排序,GROUP BY则用于按一个或多个列进行分组,常与聚合函数一起使用。例如,`SELECT DEPTNO, AVG(SAL) FROM emp GROUP BY DEPTNO`将返回每个部门的平均薪资。 7. ...

    oracle分组排序统计高级用法

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

Global site tag (gtag.js) - Google Analytics