`
丁丁豆
  • 浏览: 74565 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracle sql 按日,周,月,年统计

阅读更多
oracle sql 按日,周,月,年统计

http://www.cnblogs.com/gaojing/archive/2008/11/07/1328657.html   [oracle] to_date() 与 to_char() 日期和字符串转换

http://blog.sina.com.cn/s/blog_5fcdcbf70100er92.html   SQL   按月统计

http://www.cnblogs.com/wenbhappy/archive/2008/07/02/1233660.html

SQL按照日、周、月、年统计数据

http://blog.19lou.com/10572276/viewspace-755729 SQL按日期归类统计数据

http://piaoling.iteye.com/blog/465703 oracle的rank,over partition涵数使用

http://www.programmersheaven.com/mb/oracle/344879/344879/invalid-indentifier-error-with-this-sql-statement/?S=B20000   ORA-00904: "DAY": invalid identifier

http://www.diybl.com/course/7_databases/sql/sqlServer/2008626/128408.html   Oracle SQL group by day/week/month/quarter

http://blog.csdn.net/jamex/archive/2008/06/24/2582514.aspx   Oracle的日期函数

http://stackoverflow.com/questions/482912/sql-group-by-year-month-week-day-hour-sql-vs-procedural-performance   

经过实践

根据http://blog.19lou.com/10572276/viewspace-755729 SQL按日期归类统计数据

如:
表:consume_record
字段:consume (money类型)
date (datetime类型)

请问怎么写四条sql语句分别按日,按周,按月,按季统计消费总量.
如:1月 1200元
2月 3400元
3月 2800元

--按日
select sum(consume),day([date]) from consume_record where year([date]) = '2006' group by day([date])

--按周quarter
select sum(consume),datename(week,[date]) from consume_record where year([date]) = '2006' group by datename(week,[date])

--按月
select sum(consume),month([date]) from consume_record where year([date]) = '2006' group by month([date])

--按季
select sum(consume),datename(quarter,[date]) from consume_record where year([date]) = '2006' group by datename(quarter,[date])



--指定日期你就看上面的例子变通下呀,无非就是一个聚合函数和Group by

select [date],sum(consume) from consume_record where [date] between '2006-06-01' and '2006-07-10' group by [date]

以上适用与非ORALE,因为oracle不支持 day函数

oracle中进行上述操作需要

You can choose any of the following options and replace the text string in SQLs to let the reports be as daily/weekly/monthly/Quarterly reports..

--daily
to_char(rad.created_on+15/24, 'YYYY-MM-DD')
--weekly
to_char(next_day(rad.created_on+15/24 - 7,2),'YYYY-MM-DD')

to_char(时间列,'yyyy')||to_char(时间列,'IW')  

--monthly
to_char(rad.created_on+15/24,'yyyy-mm')
--quarterly
to_char(rad.created_on+15/24,'yyyy-q') ||'Q'

 

例如我的sql:

按天----select to_char(to_date(timestamp,'yyyymmddhh24MIss'), 'YYYY-MM-dd') a,sum(num) from udbstat group by to_char(to_date(timestamp,'yyyymmddhh24MIss'), 'YYYY-MM-dd');

按周----select to_char(to_date(timestamp,'yyyymmddhh24MIss'), 'ww') a,sum(num) from udbstat group by to_char(to_date(timestamp,'yyyymmddhh24MIss'), 'ww');

因为我的timestamp是字符串,故需要先转换成date类型。

如果字段本身就是date类型,sql如下:

按小时---select to_char(timestamp, 'YYYY-MM-dd hh24') a,sum(num) from udbstat group by to_char(timestamp,'YYYY-MM-dd hh24');

按天---select to_char(timestamp, 'YYYY-MM-dd') a,sum(num) from udbstat group by to_char(timestamp,'YYYY-MM-dd');

按月---select to_char(timestamp, 'YYYY-MM') a,sum(num) from udbstat group by to_char(timestamp,'YYYY-MM');

按年---select to_char(timestamp, 'YYYY') a,sum(num) from udbstat group by to_char(timestamp,'YYYY');

按季度---select to_char(timestamp, 'YYYY-q') a,sum(num) from udbstat group by to_char(timestamp,'YYYY-q');

按周---select to_char(timestamp, 'ww') a,sum(num) from udbstat group by to_char(timestamp,'ww');

分享到:
评论

相关推荐

    oracle sql计算一段时间内(除去周六日)的秒数

    利用 oracle sql 实现 计算一段时间内(除去周六日)的秒数

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

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

    SQL工作日计算,只排除周末

    ### SQL工作日计算,只排除周末 在数据库管理和数据分析领域,准确地计算两个日期之间的有效工作日数量是一项非常实用的功能,特别是在需要排除周末(通常指周六和周日)的情况下。这种计算方法对于财务报告、项目...

    Oracle 获得某日期属于一年中的第几个自然周

    标题“Oracle 获取某日期属于一年中的第几个自然周”指的是在Oracle数据库系统中,通过SQL查询来确定一个特定日期在当年是第几周的问题。在实际业务中,这样的功能可能用于统计、报告或者数据分析,例如,公司可能...

    周、月、季、年统计SQL

    本文将详细介绍如何利用Oracle SQL来获取当前周、月、季、年的起始日期与结束日期,并进一步讨论如何基于这些日期进行数据统计。 #### 1. 获取当前周的起始与结束日期 - **当前周周一**:`select next_day(SYSDATE...

    SQLOracle21天自学通

    ### SQLOracle21天自学通 #### 第一天:SQL简介 - **SQL简史**:SQL(Structured Query Language,结构化查询语言)是一种用于管理关系型数据库的标准语言。它最初由IBM的研究员Donald D. Chamberlin和Raymond F. ...

    Oracle 获取上周一到周末日期的查询sql语句

    在描述中的第一条SQL语句,`to_char(to_date('20130906','yyyymmdd'), 'd') from dual`,这行代码的作用是确定给定日期(2013年9月6日)是周内的第几天,结果为6,表示这是本周的第六天,因为Oracle默认周日是一周的...

    SQL语句,查询当月,当年数据

    这些SQL语句主要用于Oracle数据库环境,并通过具体的例子进行说明。 #### 查询当前月份的数据 为了查询当前月份的数据,可以使用以下SQL语句: ```sql SELECT * FROM table t WHERE t.create_time >= TRUNC...

    三周精通SQL 中文版

    《三周精通SQL》是一本面向数据库开发人员和管理员的中文教程,旨在帮助读者快速掌握SQL这一关系型数据库管理语言的基础与高级应用。SQL(Structured Query Language)是数据查询、数据操纵、数据定义和数据控制的...

    sql计算班组func.zip_oracle_sql_某个时间班组

    1. **日期函数**: Oracle提供了一系列日期函数,如`SYSDATE`获取当前系统日期,`ADD_MONTHS`增加或减少月份,`TRUNC`截断日期到指定的精度(如年、月、日等),`EXTRACT`提取日期/时间的特定部分(如小时、分钟等)...

    Oracle 获得某日期属于该前月中的第几个自然周

    使用这个函数,你可以方便地查询任何日期属于其前一个月的第几个自然周,这对于统计分析或业务处理非常有用。例如,你可以结合其他业务数据,找出特定日期范围内各周的销售趋势、用户活跃度等指标。 在实际应用中,...

    oracle实现按天,周,月,季度,年查询排序方法

    本文将详细介绍如何利用SQL语句实现按天、周、月、季度和年进行查询和排序的功能。 首先,我们来看按天查询。在Oracle中,我们可以使用`to_char()`函数结合日期时间格式模型`'YYYY-MM-DD'`来提取日期,并以此进行...

    sql高级进阶

    - 计算一年中周内各日期的次数:统计一年中各周内某天的出现频率。 - 确定当前记录和下一条记录之间相差的天数:使用数据库的日期差函数。 8. 日期操作 - SYSDATE能得到的信息:解释SYSDATE函数返回的当前系统...

    考勤管理系统(VB+Oracle)

    4. 出勤统计:提供按日、周、月的出勤报告,以及迟到、早退、缺勤等统计分析。 5. 数据备份与恢复:定期备份考勤数据,以防数据丢失,同时提供数据恢复功能。 6. 系统设置:管理员可配置系统参数,如打卡时间范围、...

    SQL 21日自学通(中文版).pdf

    - **流行的SQL开发工具**:市场上有许多优秀的SQL开发工具,如MySQL Workbench、SQL Server Management Studio、Oracle SQL Developer等。这些工具提供了丰富的功能,帮助开发者更轻松地编写和测试SQL代码。 - **...

    JSP+SQL网站流量统计管理系统(源代码+论文).zip

    4. 时间段分析:按小时、日、周、月统计访问量,分析访问高峰期。 5. 来源追踪:记录用户来源,如搜索引擎、直接访问、外部链接等。 五、安全性与性能优化 系统可能还考虑了安全性问题,如防止SQL注入攻击,确保...

    Oracle DBA日常工作手册

    - **Oracle 10g OEM图形化自定义对所有表、索引统计分析的自动化调度任务**: - 利用OEM的功能创建定时任务,定期对表和索引进行统计分析。 **6. 导出表、索引最新统计分析数据** - 将统计分析的结果导出为文件,...

    Oracle+DBA日常工作手册

    ### Oracle DBA 日常工作手册知识点详述 #### 第一章 事前阶段 ##### 一、日常工作——每天应做工作内容 **1、工作内容——日常环境监控** **1.1 系统运行环境监控** - **Oracle 文件监控**:检查Oracle数据文件...

Global site tag (gtag.js) - Google Analytics