2013-03-21 20 views
1

我有一張表,用於存儲有關訪問系統的用戶的數據。當用戶瀏覽系統時,我將它們的位置,用戶名,日期和時間存儲在Oracle 11g數據庫中。我的表看起來像這樣:計算第一個和最後一個元組之間的分鐘數以及按用戶名分組

username date   time   location 

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

我需要一個查詢,將計算第一和最後一個日誌每一天之間的分鐘數,爲每個特定的用戶名。怎麼會這樣做呢?

+1

什麼是日期和時間的數據類型? – 2013-03-21 11:43:22

回答

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

+0

他們不是。他們都與上述格式的日期。日期:YYYY-MM-DD和時間:HH24:MI:SS – junkystu 2013-03-21 12:09:28

+0

但是我看到你的想法,並且我得到了它的工作,謝謝! – junkystu 2013-03-21 12:12:59

+0

@junkystu,oracle中的'date'是表示日期+時間的數字,它沒有格式... – 2013-03-21 12:15:55

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 
+0

我需要計算每個特定用戶名的每一天的第一個和最後一個日誌之間的分鐘數。所以這是行不通的。謝謝 – junkystu 2013-03-21 12:05:20

相關問題