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

oracle按天,周,月,季度,年查询排序

天--to_char(t.start_time,'YYYY-MM-DD')
周 --to_char(t.start_time,'YYYY'),to_char(t.start_time,'IW')
月度--to_char(t.start_time,'YYYY-MM')
季度--to_char(t.start_time,'YYYY'),to_char(t.start_time,'Q')
年度--to_char(t.start_time,'YYYY')

按天查询

select to_char(t.start_time,'YYYY-MM-DD') day ,count(*) from test t
where to_char(t.start_time,'YYYY')='2019' --条件限制
group by to_char(t.start_time,'YYYY-MM-DD') --分组
order by to_char(t.start_time,'YYYY-MM-DD') --排序

按周查询

select to_char(t.start_time,'YYYY') year ,to_char(t.start_time,'IW'),count(*) from test t
where to_char(t.start_time,'YYYY')='2019' --条件限制
group by to_char(t.start_time,'YYYY') year ,to_char(t.start_time,'IW')--分组
order by to_char(t.start_time,'YYYY') year,to_char(t.start_time,'IW') --排序

按月度查询

select to_char(t.start_time,'YYYY-MM') ,count(*) from test t
where to_char(t.start_time,'YYYY')='2019' --条件限制
group by to_char(t.start_time,'YYYY-MM') --分组
order byto_char(t.start_time,'YYYY-MM') --排序

按季度查询

select to_char(t.start_time,'YYYY') year ,to_char(t.start_time,'Q'),count(*) from test t
where to_char(t.start_time,'YYYY')='2019' --条件限制
group by to_char(t.start_time,'YYYY') ,to_char(t.start_time,'Q')--分组
order byto_char(t.start_time,'YYYY') ,to_char(t.start_time,'Q')--排序

按年度查询

select to_char(t.start_time,'YYYY') year ,count(*) from test t
where to_char(t.start_time,'YYYY')='2019' --条件限制
group by to_char(t.start_time,'YYYY') --分组
order by to_char(t.start_time,'YYYY') --排序

知识点扩展:oracle 实现按天,周,月,季度,年查询统计数据

这里提供了一种方法,挺不错oracle 实现按周,月,季度,年查询统计数据 。

还在网上看到用trunc来搞也可以,下面是个例子,两句SQL效果一样的.

id有重复的,所以group by搞了两个字段.

只在Oracle数据库里试过,其它库没试过。

 create table CONSUMER_ACC
 (
 ID VARCHAR2(50) not null ,
 ACC_NUM VARCHAR2(10),
 DATETIME DATE
 ) 

 select t.id,trunc(t.datetime, 'mm' ) as d, sum (t.acc_num) as n
 from CONSUMER_ACC t
 --where
 group by t.id,trunc(t.datetime, 'mm' )
 order by n desc ;
 select t.id,to_char(t.datetime, 'mm' ) d , sum (t.acc_num) n
 from CONSUMER_ACC t
 --where
 group by t.id,to_char(t.datetime, 'mm' )
 order by n desc
------------------------------------------------------------------------------
//按天统计
select count(dataid) as 每天操作数量, sum()
from
where
group by trunc(createtime, 'DD'))
//按自然周统计
select to_char(date,'iw'),sum()
from
where
group by to_char(date,'iw')
//按自然月统计
select to_char(date,'mm'),sum()
from
where
group by to_char(date,'mm')
//按季统计
select to_char(date,'q'),sum()
from
where
group by to_char(date,'q')
//按年统计
select to_char(date,'yyyy'),sum()
from
where
group by to_char(date,'yyyy') 

总结

以上所述是小编给大家介绍的oracle实现按天,周,月,季度,年查询排序方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

(0)

相关推荐

  • Oracle查询优化日期运算实例详解

     加减日.月.年 在Oracle中,date类型可以直接加减天数,而加减月份要用add_months函数. select a.hiredate 雇用日期, a.hiredate + 5 加5天, a.hiredate - 5 减5天, add_months(hiredate, 5) 加5个月, add_months(hiredate, -5) 减5个月, add_months(hiredate, 5 * 12) 加5年, add_months(hiredate, -5 * 12) 减5年 fro

  • oracle查询截至到当前日期月份所在年份的所有月份

    下面通过一个查询语句给大家介绍oracle查询截至到当前日期月份所在年份的所有月份,具体代码如下所示: SELECT to_number(TO_CHAR(add_months(trunc(sysdate, 'yy'), ROWNUM - 1), 'MM')) as month FROM DUAL CONNECT BY ROWNUM <= (select months_between(trunc(sysdate, 'mm'), trunc(sysdate, 'yy')) + 1 from dual

  • oracle 查询当天数据的sql条件写法

    日报数据统计中会用到当天数据的查询,下列就是日期要对应的条件: between  to_date(to_char(sysdate,'yyyy-mm-dd') || ' 00:00:01','yyyy-mm-dd hh24:mi:ss') and to_date(to_char(sysdate,'yyyy-mm-dd') || ' 23:59:59','yyyy-mm-dd hh24:mi:ss'); Oracle 字段类型为varchar2,格式要与格式化的样式匹配 当天 select * fr

  • oracle使用to_date查询一周的第一天日期

    周使用IW方式计算,如果一年当中第52周别之后至当年的12月31日之间,还有大于或等于4天的话,则定为当年的第53周,否则剩余这些天数被归为下一年的第1周 复制代码 代码如下: CREATE OR REPLACE FUNCTION f_week_to_date(a_week varchar2) RETURN CHAR IS    v_first_date   char(10);    v_date_of_week number(1); BEGIN    select to_char(to_dat

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

    复制代码 代码如下: -- Oracle 取上周一到周末的sql -- 这样取的是 在一周内第几天,是以周日为开始的 select to_char(to_date('20130906','yyyymmdd'),'d') from dual; --结果:6 注释:2013.09.06是周五,为本周的第六天 select to_char(sysdate+(2-to_char(sysdate,'d'))-7,'yyyymmdd') from dual;---上周一 select to_char(sys

  • Oracle中查询本月星期5的所有日期列表的语句

    复制代码 代码如下: SELECT * FROM (SELECT TRUNC(SYSDATE, 'mm') + ROWNUM - 1 DAYS FROM (SELECT LEVEL FROM DUAL CONNECT BY LEVEL <= TRUNC(LAST_DAY(SYSDATE)) - TRUNC(SYSDATE, 'mm') + 1)) WHERE TO_CHAR(DAYS, 'd') = '6' 作者 scorpio3k

  • Oracle查询最近几天每小时归档日志产生数量的脚本写法

    下面给大家分享Oracle查询最近几天每小时归档日志产生数量的脚本写法,脚本如下所示: SELECT SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH:MI:SS'),1,5) Day, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'00',1,0)) H00, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS

  • oracle实现动态查询前一天早八点到当天早八点的数据功能示例

    本文实例讲述了oracle实现动态查询前一天早八点到当天早八点的数据.分享给大家供大家参考,具体如下: 需要查询前一天早八点到当天早八点的数据 这里是查询sql语句 SELECT DEPT_ID, COUNT( * ) DID FROM "MES_MACH_CALL_EVENT" WHERE CALL_TIME >= trunc(sysdate-1)+8/24 AND CALL_TIME <= trunc(sysdate)+8/24 GROUP BY DEPT_ID 现在单

  • Oracle实现查询2个日期所跨过的月份列表/日期列表的方法分析

    本文实例讲述了Oracle实现查询2个日期所跨过的月份列表/日期列表的方法.分享给大家供大家参考,具体如下: 1.基本逻辑公式: Select Rownum, 开始日期+Rownum-1 from dual connect by rownum< 结束日期-开始日期 +2; 2.查询2个日期所跨过的日期yyyy-mm-dd列表: 查询结果: SQL代码(开始时间:2019-01-22,结束时间:2019-01-02): Select Rownum, to_date('2019-01-02', 'y

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

    oracle按天,周,月,季度,年查询排序 天--to_char(t.start_time,'YYYY-MM-DD') 周 --to_char(t.start_time,'YYYY'),to_char(t.start_time,'IW') 月度--to_char(t.start_time,'YYYY-MM') 季度--to_char(t.start_time,'YYYY'),to_char(t.start_time,'Q') 年度--to_char(t.start_time,'YYYY') 按天

  • Pandas按周/月/年统计数据介绍

    Pandas 按周.月.年.统计数据 介绍 将日期转为时间格式 并设置为索引 import pandas as pd data=pd.read_excel('5\TB201812.xls',usecols=['订单创建时间','总金额']) print(data) data['订单创建时间']=pd.to_datetime(data['订单创建时间']) data=data.set_index('订单创建时间') print(data) 按周.月.季度.年统计数据 import pandas a

  • MySql按时,天,周,月进行数据统计

    目录 前言 1. 时间取整方式 2. data_format方式 前言 最近遇到一个统计的需求场景,针对db中的数据,看一下每天的数据量情况,由于DB中时间字段采用的是int存的时间戳,所以最开始想到的是直接对时间进行按天取整,然后再Group统计数据: 除此之外,使用DATE_FORMAT函数来处理可能是更简洁的方法了,下面分别介绍下两种方式 1. 时间取整方式 假设现在有一个user表,其中create_time 为 int类型的时间戳,此时我们需要统计每天的新增用户数,第一种方式就是将cr

  • MySQL按年/月/周/日/小时分组查询、排序、limit及判空用法实例

    目录 一.按年/月/周/日/小时分组查询(日期时间类型为date或者datetime) 二.MySQL排序 1.排序规则 2.单列排序 三.limit 详细用法 1.用于强制返回指定的记录行数 2.分页 四.ifnull()函数的使用 1.ifnull()的语法 2.ifnull()的使用 总结 一.按年/月/周/日/小时分组查询(日期时间类型为date或者datetime) 在DATE_FORMAT(create_time,'%Y%m%d')中设置需要分组的类型和格式,如下: '%Y%m%d'

  • Oracle用户密码设为不过期的两种方法

    1.在SQL Plus下,以DBA身份登陆 用户名/密码@服务器SID as sysdba 方法一:(注意必须用双引号把后面的引上) C:/Documents and Settings/ssy>sqlplus sys/system@test as sysdba SQL*Plus: Release 9.2.0.1.0 - Production on 星期一 3月 17 18:01:41 2008 Copyright (c) 1982, 2002, Oracle Corporation. All r

  • Java实现获取某年某月第一天/最后一天的方法

    本文实例讲述了Java实现获取某年某月第一天/最后一天的方法.分享给大家供大家参考,具体如下: Java获取某年某月的第一天 设计源码 FisrtDayOfMonth.java: /** * @Title:FisrtDayOfMonth.java * @Package:com.you.freemarker.model * @Description:获取某年某月的第一天 * @author:Youhaidong(游海东) * @version V1.0 */ package com.you.fre

  • 讲解Oracle数据库中的数据字典及相关SQL查询用法

    Oracle数据字典概述    数据库是数据的集合,数据库维护和管理这用户的数据,那么这些用户数据表都存在哪里,用户的信息是怎样的,存储这些用户的数据的路径在哪里,这些信息不属于用户的信息,却是数据库维护和管理用户数据的核心,这些信息就是数据库的数据字典来维护的,数据库的数据字典就汇集了这些数据库运行所需要的基础信息叻.每个数据库都提供了各自的数据字典的方案,虽然形式不同,但是目的和作用是一样的,比如在mysql里数据字典是在information_schema 里表现的,sqlserver则是

  • oracle 数据按主键删除慢问题的解决方法

    问题描述: 根据表主键id删除一条数据,在PL/SQL上执行commit后执行时间都大于5秒.!!! 问题分析: 需求是删除一个主表A,另有两个附表建有此表的主键ID的外键.删除A表的数据级联删除另两个表的关联数据.增删改查使用hibernate实现. 一开始一直以为是hibernate的内部处理上有关联操作导致的删除和更新数据缓慢.所以将原先使用hibernate的saveOrupdate方法,改查jdbc的 sql语句来处理update和delete数据操作.但是依然没效果!!! 怀疑数据库

  • Oracle EBS工具选项:关闭其他表单修改方法

    Oracle EBS里 工具-关闭其他表单 如果被勾选上,用户在打开一个Form的时候,就会关闭其他的Form,保证只有一个Form存在. 如果想开启此选项,则可以通过下面两种方式 1)每个职责单独设置 增加菜单排除项:Menu Exclusions 功能:Fuction 名称:Navigator: Disable Multiform; 反之亦然. 2)通过sql永久打开/关闭 提供一个通过脚本永久修改这个选项的解决方法: SELECT preference_value FROM applsys

  • Oracle用户密码过期和用户被锁的解决方法

    今天正在上班的过程中,客户反映了他们的系统登录不了,经过我的一番检查,发现是因为数据库密码过期导致的,在网上查找相关资料发现还真有此种情况发生,在此顺便做了个整理,以便共同交流! 产生原因: 在oracle11g中默认在default概要文件中设置了"PASSWORD_LIFE_TIME=180天"所导致. 在oracle11g中默认在default概要文件中设置了"FAILED_LOGIN_ATTEMPTS=10次",当输入密码错误次数达到设置值将导致此问题. 解

随机推荐