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

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"

ここにsqlfiddleのデモがあります

于 2013-03-21T12:04:58.180 に答える
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 に答える