计算第一个和最后一个元组之间的分钟数,并按用户名分组

时间:2013-03-21 11:39:31

标签: sql oracle oracle11g oracle-sqldeveloper

我有一个表,用于存储有关访问系统的用户的数据。当用户浏览系统时,我将其位置,用户名,日期和时间存储在Oracle 11g数据库中。我的表看起来像这样:

    username   date           time          location

    user1      YYYY-MM-DD    HH24:MI:SS     kitchen
    user2      YYYY-MM-DD    HH24:MI:SS     bathroom

我需要一个查询来计算每个特定用户名的每天第一个和最后一个日志之间的分钟数。怎么会这样做呢?

2 个答案:

答案 0 :(得分:0)

按用户名分组,按日期分组最多+分钟? (您可能需要将其与dense rank

结合使用

像(伪代码)

之类的东西
SELECT  . . .
FROM
(SELECT
select *, 
-- dates
    DENSE_RANK() OVER (PARTITION BY TRUNC(date) ORDER BY date DESC) AS rank 
                 FROM
                    your_table
)
) t1
WHERE RANK = 1      
group by

答案 1 :(得分:0)

假设datetime是varchar2,
尝试:

with t as
(
   select username, "date", to_date("date"||time, 'YYYY-MM-DDHH24:MI:SS') dt
   from your_table 
)
select username, "date",  (max(dt)- min(dt)) * 1440
from t
group by username, "date"

Here is a sqlfiddle demo