2011-08-16 10 views
2

ユーザーログインを記録するRDBMSにテーブルがあります。 ユーザーは1日中何度もシステムにログインすることができ、アプリケーションはこれらのログインを記録します。問題がある
は、私が2011年4月21日のような希望の日付の間のユーザーの 2011-07-08日付範囲内のユーザーの1日あたりのログインを取得する方法

ログインログテーブル

userID Login Date 
guess 2011-04-21 16:46:46.000 
Admin 2011-05-03 17:32:15.000 
guess 2011-05-05 15:48:54.000 
guess 2011-06-01 14:14:50.000 
guess 2011-06-01 14:23:18.000 
my_user 2011-07-08 15:42:20.000 
guess 2011-07-08 16:15:08.000 
guess 2011-07-08 16:19:14.000 
my_user 2011-07-08 16:36:45.000 
my_user 2011-07-08 16:37:41.000 
my_user 2011-07-08 16:42:21.000 
に一日あたりの最初のログインを取得し クエリを記述する必要があります

クエリは以下のような結果(それぞれの日の最初のログインの日付/時間)を与える必要があり

UserID First_Login_Date 
guess 2011-04-21 16:46:46.000 
Admin 2011-05-03 17:32:15.000 
guess 2011-05-05 15:48:54.000 
guess 2011-06-01 14:14:50.000 
my_user 2011-07-08 15:42:20.000 
guess 2011-07-08 16:15:08.000 
+2

RDBMSを試してみてください? SQL Server/MySQL/etc –

答えて

4
SELECT UserID, MIN(Login_Date) as First_Login_Date 
FROM Login 
WHERE Login_Date BETWEEN inputStartDate AND inputEndDate 
GROUP BY UserID, YEAR(Login_Date), MONTH(Login_Date), DAY(Login_Date) 

エディBYユーザと日をグループ化するように指示しました。あなたの質問は、ログインした日ごとに各ユーザの最初のログインを希望していることに特有のものではありませんでした。私はこのソリューションがMS SQL Server 2005+で動作することを肯定します。

あなたが特定の日付でグループ化のためのより多くのオプションを希望した場合、私はあなたの正確なデータベースシステムを知らないので、次のように動作するはずMS SQL 2008のために、at this article.

+0

はいこれは私が求めていたものです! Thxと敬具! – zapoo

+1

正直言って、あなたの質問は、「... 2011-04-21から2011-07-08のような希望の日付の間にユーザーの最初のログインを取得するクエリ」なので、期間内に最初のログインをしたいと思ったログイン日によってグループ化されません。 –

+2

@Bernhard私は、OPの意図は他の回答に対する彼の反応と彼が望む結果セットに基づいていると思った。間違いなく、この質問では明確ではなかった。 –

0

を見て気軽に(私も仮定しますあなたのクエリにパラメータを使用していることを確認してください)。

declare @startDate datetime = '2011-04-21' 
declare @endDate datetime = '2011-07-08' 
SELECT UserId, MIN([Login Date]) as First_Login_date FROM LoginTable WHERE [Login date] between @startDate and @endDate group by UserId 
0

1日当たりの最初のログインを見つける必要があるようです。 Oracleの場合、この作業をする必要があります:

select UserID, min(Login_Date) from your_table 
WHERE Login_Date between to_date('YYYY-MM-DD', '2011-04-21') 
      and to_date('YYYY-MM-DD', '2011-07-08') 
group by UserID, to_char(Login_Date, 'YYYYMMDD'); 
0

この

SELECT HOUR(LOGIN_TIME), COUNT(*) FROM SESSION_DETAILS 
GROUP BY HOUR(LOGIN_TIME) 
関連する問題