sql - 如何计算小时数总和?

标签 sql oracle function sum

我的表格如下

workers:

id integer

...

days:

id INTEGER

event_date DATE

worker_id INTEGER

hours:

id INTEGER

hr_start VARCHAR2(8)

hr_stop VARCHAR2(8)

day_id INTEGER

我需要一个函数来计算数据库中每个用户当月的小时数总和。字段 hr_start 和 hr_stop 包含格式为 hh:mi:ss 的时间。我需要这个用于 Oracle 数据库。

最佳答案

我在 10g XE 数据库中创建了这些测试表,此查询应该会生成您要查找的内容。

select worker_id,
       sum(hrs)
  from (select worker_id, 
               (to_date(hr_stop, 'hh24:mi:ss') - to_date(hr_start, 'hh24:mi:ss')) * 24 hrs
          from days d,
               hours h
         where d.id = h.day_id
           and trunc(event_date, 'mm') = trunc(sysdate, 'mm')
       )
group by worker_id

关于sql - 如何计算小时数总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1697255/

相关文章:

mysql - 基于 20 个表的 SQL 值求和

sql - 在 SQL Server 2005 中是否有任何方法可以按文本(或 ntext)进行区分或分组?

mysql - 从 mysql 中的表中选择不同的表项

sql - 如何计算具有不同约束的同一张表的百分比

javascript - 在 jQuery 的拖动事件中使用在类中定义的方法

javascript - 我怎样才能得到一个函数的名称?

mysql - SQL-创建带有检查约束的表时出错

sql - 按最近日期订单日期选择单个 ID -SQL

sql - 是否可以使用sql实现DFS(深度优先搜索)?

sql - 添加订单状态代码的描述