首页 > 数据库 >Oracle 分组统计,按照天、月份周和自然周、月、季度和年

Oracle 分组统计,按照天、月份周和自然周、月、季度和年

时间:2023-06-13 09:12:52浏览次数:37  
标签:STARTDATE group sum 季度 char 分组 Oracle ORDER select

 

1.按天

select to_char(t.STARTDATE+15/24, 'YYYY-MM-DD') as 天,sum(1) as 数量
from HOLIDAY t
group by to_char(t.STARTDATE+15/24, 'YYYY-MM-DD') --
ORDER by 天 NULLS  LAST;

 

select trunc(t.STARTDATE, 'DD') as 天,sum(1) as 数量
from HOLIDAY t
group by trunc(t.STARTDATE, 'DD') --
ORDER by 天 NULLS  LAST;

2.按周

select to_char(next_day(t.STARTDATE+15/24 - 7,2),'YYYY-MM-DD') AS 周,sum(1) as 数量 
from HOLIDAY t 
group by to_char(next_day(t.STARTDATE+15/24 - 7,2),'YYYY-MM-DD')ORDER BY 周;

 

-- 按自然周统计 
select to_char(t.STARTDATE,'iw') AS 周,sum(1) as 数量
from HOLIDAY t

group by to_char(t.STARTDATE,'iw')
ORDER BY 周;

3.按自然月

select to_char(t.STARTDATE,'YYYY-MM') as 月份,sum(1) as 数量
from HOLIDAY t

GROUP BY
    to_char(t.STARTDATE,'YYYY-MM')
ORDER BY 月份;

4.按季度

select to_char(t.STARTDATE,'q') 季度,sum(1) as 数量
from HOLIDAY t
group by to_char(t.STARTDATE,'q')
ORDER BY 季度 NULLS  LAST;

 

5.按年

select to_char(t.STARTDATE,'yyyy') AS 年度,sum(1) as 数量
from HOLIDAY t
group by to_char(t.STARTDATE,'yyyy')
ORDER BY 年度;

 

 

6.ORACLE用GROUP BY 来分组日期字段 按月分组

 

SELECT to_char(日期字段,'yyyymm'),sum(*) 
FROM [TableName] 
group by to_char(日期字段,'yyyymm');
SELECT to_char(日期字段,'yyyymm'),sum(*) 
FROM [TableName] 
group by to_char(日期字段,'yyyymm');

 

7.oracle查询七天数据,并且按日期分组

1、查从今天开始前七天日期

select to_char (sysdate- level + 1, 'yyyy-mm-dd') today FROM DUAL connect BY LEVEL <= 7

2、写统计语句,将数量和日期查出来(这个分组统计自己写)

3、用第一步和第二步两张表做左关联查询 ,没有的数量用0代替(刚好这几天都有数据,没有的会以0展示出来)

 

1) NVL函数

NVL(E1, E2)的功能为:如果E1为NULL,则函数返回E2,否则返回E1本身。但此函数有一定局限,所以就有了NVL2函数。

拓展:NVL2函数:Oracle/PLSQL中的一个函数,Oracle在NVL函数的功能上扩展,提供了NVL2函数。NVL2(E1, E2, E3)的功能为:如果E1为NULL,则函数返回E3,若E1不为null,则返回E2。

 

2)substr函数格式 (俗称:字符截取函数)

  格式1: substr(string string, int a, int b);

  格式2: substr(string string, int a) ;

解释:

格式1:
1、string 需要截取的字符串
2、a 截取字符串的开始位置(注:当a等于0或1时,都是从第一位开始截取)
3、b 要截取的字符串的长度

格式2:
1、string 需要截取的字符串
2、a 可以理解为从第a个字符开始截取后面所有的字符串

 

标签:STARTDATE,group,sum,季度,char,分组,Oracle,ORDER,select
From: https://www.cnblogs.com/mjxxsc/p/17476539.html

相关文章

  • oracle中rownum和row_number()
     oracle中rownum和row_number() row_number()over(partitionbycol1orderbycol2)表示根据col1分组,在分组内部根据col2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)。与rownum的区别在于:使用rownum进行排序的时候是先对结果集加入伪劣rownum然后......
  • Oracle 三种分页方法
    Oracle的三层分页指的是在进行分页查询时,使用三种不同的方式来实现分页效果,分别是使用ROWNUM、使用OFFSET和FETCH、使用ROW_NUMBER()OVER()1.使用ROWNUM ROWNUM是Oracle中一个伪列,它用于表示返回的行的序号。使用ROWNUM进行分页查询的方法是在SELECT语句中加入WHERE子句,并在W......
  • oracle 数据库当前连接查询 被占用的连接 哪些用户正在使用数据 杀掉进程
    --查询数据库当前进程的连接数:selectcount(*)fromv$process;--查看数据库当前会话的连接数:selectcount(*)fromv$session;--查看数据库的并发连接数:selectcount(*)fromv$sessionwherestatus='ACTIVE';--查看当前数据库建立的会话情况:selectsid,serial#,username,pr......
  • 虚拟器关机后如何开启oracle服务
     如果在windows2003中安装了oracle,并且重新启动(非挂起:暂停)了虚拟机那么大概率这台虚拟机在启动完毕后,其中的oracle服务不能正常运作处理方法:打开虚拟机的命令行,并且执行:  sqlplus  /  as  sysdba这一步会登入oracle工业园区的控制中心在控制中心的命令行中执行startup......
  • linux下安装oracle11g
     1.安装前准备  1.创建linux虚拟机  2.linux系统参数设置    1.hosts文件配置    vi/etc/hosts    192.168.1.52.itpuxhsdb    2.配置语言环境    echo"exprotLANG=EN_US">>~/.bash_profile    sour~/.bash_profile    3.准备文......
  • 基本线性分组码与性能参数及差错控制
    本专栏包含信息论与编码的核心知识,按知识点组织,可作为教学或学习的参考。markdown版本已归档至【Github仓库:<https://github.com/timerring/information-theory>】或者公众号【AIShareLab】回复信息论获取。基本线性分组码与性能参数线性分组码(n,k)定义线性分组码是由(n,k)......
  • Oracle的分组排序功能实现最大值一列数据获取
    需求:按某列的最大值取整行数据。 select<includerefid="ALL_COLUMNS"/>from(select<includerefid="ALL_COLUMNS"/>,ROW_NUMBER()OVER(ORDERBYTOKEN_RATEDESC)ASrnfrom<includerefid="......
  • 利用PowerDesigner将oracle表结构转成mysql表结构
    1、导出ORACLE表结构2、File->ReverseEngineer->Database,设置物理模型的名称及所使用数据库类型,选择Oracleversion11g,然后点击Usingscriptfiles框里的AddFiles按钮,选择已经导出的Oracle表结构sql文件3、改变数据库类型,Database->ChangeCurrentDBMS,CurrentDBMS......
  • react antd 表头分组渲染的问题记录
    importReact,{useEffect}from'react'import{observer}from'mobx-react'import{get}from'lodash'import{Modal}from'antd'importSelfTablefrom'@/view/common/self_table/self-table'impo......
  • 算法题总结-分组背包
    原题有N件物品和一个容量为V的背包。第i件物品的费用是Ci,价值是Wi。这些物品被划分为K组,每组中的物品互相冲突,最多选一件。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。由于截止目前,没有刷到对应的经典题目,以下以依赖背包的转化题......