-1

サイトログには、ユーザーがログインするたびに日時スタンプが記録されます。ユーザーがログインした日数をカウントするクエリが必要です。[DateTime]フィールドでカウントを実行するだけでは、ユーザーは1日に複数回ログインできます。そのため、ログインした個別の日数をカウントする方法に困惑しています。基本的に、次のクエリを生成する必要があります。

UserID
NumberOfDaysLoggedIn

たとえば、ユーザーJohn(ID 33)は次のようにログインします。

3/26/2008 12:20 PM
3/26/2008 5:58 PM
3/27/2008 11:46 AM

私たちが望む結果は次のようになります。

UserID    NumberofDaysLoggedIn
    33                       2

oracleクエリを使用してその結果を生成するためのアイデア。任意のアイデアを提案してください

4

4 に答える 4

3

あなたがすべきことは、日付を四捨五入してから、個別の下に置くことです。

日付を丸める関数はtrunc().

あなたはそのようにすることができます:

select count(*)
from (select name, trunc(date)
      from table
      group by name, trunc(date))
where name = 'John';

各ユーザーの結果を取得したい場合は、次のようにできます。

select name, count(*)
from (select distinct name, trunc(date)
      from table)
group by name;
于 2011-08-04T10:13:04.387 に答える
2

次のようなことをする必要があります;

select userID, count(distinct trunc(date))
from table
于 2011-08-04T10:07:04.967 に答える
0

次の行に沿って、個別の日付を数えることができます。

select count(distinct trunc(t.date))
  from table t
 where t.userId = some user id

trunc()日付を日の値に切り捨てますが、特定の測定単位に切り捨てるためのフォーマット パラメータを使用することもできます。

于 2011-08-04T10:13:41.383 に答える
0
with t as 
(
select 1 as id, sysdate as d from dual
union all
select 1 as id, sysdate - 0.5 as d from dual
union all
select 1 as id, sysdate - 0.6 as d from dual
union all
select 1 as id, sysdate - 1 as d from dual
union all
select 2 as id, sysdate - 1 as d from dual
)
select id, count(distinct trunc(d))
from t 
group by id
;
于 2011-08-04T10:39:49.473 に答える