汇总并计算记录集的总分钟数作为生产率

时间:2014-10-23 22:50:03

标签: sql oracle aggregate-functions

我有一张表格列出了人们的活动以及活动的开始/结束时间。 如何获得每个人的总记录数?

SELECT NAME,
    --sum(startDT- endDT) AS minutes -- stuck here
FROM TABLE1
GROUP BY NAME

enter image description here

2 个答案:

答案 0 :(得分:3)

您从开始时间减去结束时间,这将产生负值 - 尝试翻转周围的时间(从结束时间减去开始时间)。以下内容将为您提供每个NAME的记录数和总耗用时间:

SELECT NAME,
       COUNT(*) AS "Records for NAME",
       TO_CHAR(NUMTODSINTERVAL(SUM(END_DATE_TIME - START_DATE_TIME), 'DAY')) AS MINUTES
  FROM TABLE1
  GROUP BY NAME

SQLFiddle here

分享并享受。

答案 1 :(得分:1)

假设startDTendDT都属于date类型,那么您真的非常接近。减去两个日期会产生天数差异。乘以24得到小时差异,再乘以60得到分钟

SELECT NAME,
       sum(endDT - startDT)*24*60 AS minutes -- stuck here
  FROM TABLE1
 GROUP BY NAME

假设你的差异并不总是完全均匀的分钟数,那么你或者在这里获得非整数结果(例如12.5分12秒30秒),或者你想要要么round要么trunc要么得到整数分钟。