orcale 根据时间段统计(分钟,小时,天,月,年)

本文探讨了SQL查询中使用trunc函数进行时间截断、分组与聚合操作的优化方法,具体展示了如何通过trunc函数按分钟、小时、天等时间单位筛选数据,并计算汇总值如总和、平均值、最大值、最小值与计数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

select 类别, trunc(时间, 'mi'),
       sum(字段),
       avg(字段),
       max(字段),
       min(字段),
       from table1
       where 类别 = 'value'
 group by 类别, trunc(下单时间, 'mi')
 

改变  'mi'  按如下说明即可;

小时: hh24; 天: dd; 月:mm; 年: yy;

  select t.log_type,
         trunc(t.collect_time, 'mi'),
         sum(t.succ_req_num),
         avg(t.succ_req_num),
         max(t.succ_req_num),
         min(t.succ_req_num),
         count(1)
          from tb_server_log t where t.log_type = '0'
         group by t.log_type, trunc(t.collect_time, 'mi') ;

### Oracle 数据库中的分组统计 #### 使用 `GROUP BY` 和聚合函数 在Oracle数据库中,可以通过使用 `GROUP BY` 子句配合聚合函数来进行基本的分组统计。常见的聚合函数包括 `COUNT()`、`SUM()`、`AVG()` 等。 ```sql SELECT dept_id AS "部门编号", COUNT(*) AS "员工数量" FROM employee GROUP BY dept_id; ``` 此查询会返回每个部门的员工总数[^3]。 #### 多维分组统计:CUBE 选项 为了获得更复杂的多维度统计数据,可以利用 `GROUP BY` 的 `CUBE` 选项。这使得能够对多个字段的不同组合进行汇总,从而生成类似Excel数据透视表的结果。 ```sql SELECT dept_id AS "部门编号", sex AS "性别", COUNT(*) AS "员工数量" FROM employee GROUP BY CUBE(dept_id, sex); ``` 这段SQL语句不仅提供了按部门和性别的独立计数,还给出了所有可能组合下的总计数值,如不分性别只看部门的人数总和,或不区分部门仅考虑性别的分布情况等。 #### 结合窗口函数增强分组统计能力 除了传统的 `GROUP BY` 方式外,还可以应用窗口函数来扩展分组统计的功能。通过定义一个特定的数据窗口,在不影响原表格结构的前提下完成更加灵活细致的数据分析工作。 ```sql WITH EmployeeStats AS ( SELECT emp_id, dept_id, salary, AVG(salary) OVER(PARTITION BY dept_id) as avg_dept_salary FROM employee ) SELECT * FROM EmployeeStats es WHERE es.salary > es.avg_dept_salary; ``` 上述例子展示了如何找出那些工资高于所在部门平均薪资水平的雇员记录。这里的关键在于 `OVER(PARTITION BY ...)` 构造指定了用于计算均值的逻辑分区范围[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值