简介:
oracle实现按照天、周、月、季、年进行数据统计,在实际业务场景中如 “报表之类” 、”财务业务的往来” 等等,业务往往需要我们统计整年 或 整月的数据等,下面我们直入主题。
说明:
原始数据
一、按天查询
1、片段
1 2 3 4 | select to_char(x. time , 'yyyy-mm-dd' ) as day , count (1), sum (x. sum ) from XIAO x where to_char(x. time , 'yyyy-mm-dd' ) = '2023-04-23' group by to_char(x. time , 'yyyy-mm-dd' ) order by to_char(x. time , 'yyyy-mm-dd' ) |
2、结果集
day 统计2023-04-23 号,count(1) 统计2023-04-23 号有两条数据,sum 统计2023-04-23两条数据个数相加。
二、按周查询
1、片段
1 2 3 4 | select to_char(x. time , 'yyyy' ) as week,to_char(x. time , 'IW' ), count (1) from XIAO x where to_char(x. time , 'yyyy' ) = '2023' group by to_char(x. time , 'yyyy' ),to_char(x. time , 'IW' ) order by to_char(x. time , 'yyyy' ),to_char(x. time , 'IW' ) |
2、结果集
三 、按月度查询
1、片段
1 2 3 4 | select to_char(x. time , 'yyyy-MM' ) as month , count (1) from XIAO x where to_char(x. time , 'yyyy' ) = '2023' group by to_char(x. time , 'yyyy-MM' ) order by to_char(x. time , 'yyyy-MM' ) |
2、结果集
四、按季统计
1、片段
1 2 3 4 | select to_char(x. time , 'yyyy' ) as quarter,to_char(x. time , 'Q' ), count (1) from XIAO x where to_char(x. time , 'yyyy' ) = '2023' group by to_char(x. time , 'yyyy' ),to_char(x. time , 'Q' ) order by to_char(x. time , 'yyyy' ),to_char(x. time , 'Q' ) |
2、结果集
五、按年统计
1、片段
1 2 3 4 | select to_char(x. time , 'yyyy' ) as year , count (1) from XIAO x where to_char(x. time , 'yyyy' ) = '2023' group by to_char(x. time , 'yyyy' ) order by to_char(x. time , 'yyyy' ) |
2、结果集
附加
oracle日期函数IW和WW的区别
WW:
每年的1月1日作为当年的第一周的第一天(不管当年的1月1日是星期几);
比如:2011/01/01 是周六, 在Oracle中被定义为2011年的第一周的第一天;
1 | select to_char(TO_DATE( '20230101' , 'YYYYMMDD' ), 'yyyyww' ) as week1 from dual |
IW :
Oracle 日期和时间函数 IW
和 WW
都用于处理日期和时间,但它们之间有一些区别。
首先,WW
函数用于处理星期几的标准,而 IW
函数用于处理日期和时间的标准格式。具体来说,WW
函数将日期或时间字符串转换为 ISO 8601 标准格式的日期或时间,而 IW
函数将日期或时间字符串转换为本地日期和时间格式。
其次,WW
函数将日期或时间字符串的小时、分钟和秒数分别提取出来,并将它们转换为 12 小时制的小时、分钟和秒数。而 IW
函数则将日期或时间字符串的小时、分钟和秒数保留为原样,不进行转换。
此外,WW
函数将日期或时间字符串的日期部分提取出来,并将它们转换为 ISO 8601 标准格式的日期部分。而 IW
函数则将日期或时间字符串的日期部分保留为原样,不进行转换。
总之,WW
函数和 IW
函数都可以用于处理日期和时间,但它们之间的区别在于处理的标准和格式不同。在实际使用中,需要根据具体情况选择适合的函数。
附加sql片段
oracle求当前日期是今年第几天,第几周,第几月,第几季度。
1 2 3 4 5 6 7 8 | select to_char(TO_DATE( '20230101' , 'YYYYMMDD' ) , 'yyyyiw' ) as week, --oracle求当年的第几周 to_char(TO_DATE( '20230101' , 'YYYYMMDD' ) , 'yyyyww' ) as week1, --oracle求当年的第几周 to_char(TO_DATE( '20230101' , 'YYYYMMDD' ), 'yyyy' ) as year , --oracle求第几年 to_char(TO_DATE( '20230101' , 'YYYYMMDD' ) , 'yyyymm' ) as month , --oracle求当年的第几月 to_char(TO_DATE( '20230101' , 'YYYYMMDD' ), 'yyyyddd' ) as day , --oracle求当年的第几天 to_char(TO_DATE( '20230401' , 'YYYYMMDD' ) , 'yyyyq' ) as quarter -- oracle求当年的第几季度 from dual |
结果集
总结
到此这篇关于Oracle数据库中如何按天、周、月、季、年统计数据的文章就介绍到这了,更多相关Oracle按天周月季年统计数据内容请搜索IT俱乐部以前的文章或继续浏览下面的相关文章希望大家以后多多支持IT俱乐部!