【发布时间】:2012-02-17 02:46:27
【问题描述】:
我需要使用基于 oracle 的查询来检索员工的工作时间,即员工根据事务表中的事务进入和外出的时间。
事务表有一个可用于此目的的日期时间字段。
所涉及的步骤如下: 1)找到一个日期的第一笔交易和同一日期的最后一笔交易——这将是他在该日期的时间和超时 2) 计算总时间为每个日期所有时间的平均值,类似地做超时
事务表如下:transctn(transid, resourceid, event, currentdate)
第二个要求是找到每天执行的平均交易,这基本上是找到每天的transids计数,然后平均。
最终的答案应该是,当提供用户 ID 时,查询的返回结果是:
frequent working time(based on average): 9:43 am - 6:45 pm
average transactions performed/day = 43
如果 Transctn 是我的 Domain 类,我如何在 oracle SQL 中或更巧妙地使用 Hibernate 编写上述要求
我有这样的事情:
select 'frequent working time: '
||(select rtrim(to_char(min(currentdate),'hh:mi pm')) from transctn)
||' - '||(select rtrim(to_char(max(currentdate),'hh:mi pm')) from transctn)
||', average transactions performed/day = '
||(select rtrim(to_char(count(distinct transid)/
count(distinct(to_char(currentdate,'rrmmdd')))) from transctn)
from dual
【问题讨论】:
-
我有类似这样的 SELect '频繁工作时间:'||(select rtrim(to_char(min(currentdate),'hh:mi pm')) from transctn) ||' - '||(select rtrim(to_char(max(currentdate),'hh:mi pm')) from transctn) ||', 平均事务执行/天 = ' ||(select rtrim(to_char(count(distinct transid)) /count(distinct (to_char(currentdate,'rrmmdd')))) from transctn) from dual