2017-05-31 112 views
0

我在从Oracle数据库中的后续方式中的数据:平均符合条件的Oracle

check   HR  Serie  Name 
14:00:31 13:59:19 6120  A 
14:10:31 13:59:21 6120  A 
14:00:31 13:57:19 6120  A 
14:04:01 14:02:00 6120  B 
14:06:01 14:02:14 6120  B 
14:04:01 14:04:00 6120  B 
14:04:01 14:02:00 7100  A 
14:08:01 14:03:00 7100  A 
14:04:01 14:04:00 7100  A 

我要计算的列“人力资源”的平均每个系列和名称(两者),但如果只有列检查的值是相同的

其结果将是:

check  AVG(HR) Serie  Name 
14:00:31 13:58:19 6120  A 
14:00:31 14:03:00 6120  B 
14:04:01 14:03:00 7100  A 

这里是我的代码:

SELECT 
    TO_CHAR(TRUNC(SysDate) + (AVG(TO_NUMBER(TO_CHAR(TO_DATE(TO_CHAR(HR, 'HH24:MI:SS'), 'HH24:MI:SS'), 'SSSSS'))/60))/24/60, 'hh24:mi:ss'), Serie,Name 
from table 
group by Serie, name 

的问题,我估计即使值列检查不同的是平均

+0

所以,你说你想让计算也通过'check'进行分组? – JohnHC

回答

1

在包括checkGROUP BY子句并添加一个HAVING子句,该子句将检查重复项:

SELECT check, 
     TO_CHAR(TRUNC(SYSDATE) + AVG(HR - TRUNC(HR)), 'HH24:MI:SS') 
     AS "AVG(HR)", 
     serie, 
     name 
GROUP BY check, serie, name 
HAVING COUNT(*) > 1 
+0

请问您可以查看我最后一个问题:/ –

0

感谢你的答案,但有可能已识别的重复,因为每一个系列的名字我有4个结果,并在最后我想有结果:

check   HR  Serie  Name 
14:00:31 13:58:19 6120  A 
14:12:31 14:03:00 6120  B 
14:10:31 13:59:21 6120  A (duplicate) 
14:04:01 14:03:00 6120  B (duplicate) 

并具有相同后,结果,但重复?而@MTO我没有不明白为什么你添加count(*)> 1如果添加它,有什么区别?