1

我有一个表来存储有关访问系统的用户的数据。当用户浏览系统时,我将他们的位置、用户名、日期和时间存储在 Oracle 11g 数据库中。我的表如下所示:

    username   date           time          location

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

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

4

2 回答 2

0

按用户名分组,按日期最大+最小?(您可能需要将它与密集等级相结合

类似的东西(伪代码)

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
于 2013-03-21T11:46:28.317 回答
0

假设dateandtime是 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"

这是一个 sqlfiddle 演示

于 2013-03-21T12:04:58.180 回答