我有一个表,用于存储有关访问系统的用户的数据。当用户浏览系统时,我将其位置,用户名,日期和时间存储在Oracle 11g数据库中。我的表看起来像这样:
username date time location
user1 YYYY-MM-DD HH24:MI:SS kitchen
user2 YYYY-MM-DD HH24:MI:SS bathroom
我需要一个查询来计算每个特定用户名的每天第一个和最后一个日志之间的分钟数。怎么会这样做呢?
答案 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)
假设date
和time
是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"