0

トランザクションが実行されるuserids日時のリストを含むテーブルがあります。stamp次のようになります。

UserId | Stamp   
 John11| 01/01/2013 01:15:27

各ユーザーが行ったトランザクションの期間を示すクエリを返したいと思います。

私は試してみましたcountが、時間の部分が原因stampで、全体ではなく個々のミリ秒がカウントされます。

前もって感謝します

4

4 に答える 4

0

実際の値を取得するには、 time_to_sec関数を使用します。

Select count(UserId), UserId from table where time_to_sec(stamp) between 
fromTime and toTime
-- fromTime and toTime are interval period 
于 2013-03-18T11:29:08.737 に答える
0

カウントをどのように行いたいかによって、このようなものが機能するはずです。

ユーザー ID の dd-mon-yyyy hh24:mi:ss の一意の出現がすべてカウントされます。

SELECT userid
,      count(distinct TO_CHAR(stamp, 'dd-mon-yyyy hh24:mi:ss'))
FROM   MYTABLE
where  stamp > to_date('16-03-2013','DD-MM-YYYY')
group by userid

実際の例: http://sqlfiddle.com/#!4/71241/1

于 2013-03-18T12:25:36.323 に答える
0

あなたの質問はあなたが望む期間を指定していませんが、他の期間に適応できる月の例を次に示します:

SELECT 
  (DATEPART(YEAR, Stamp) * 100) + RIGHT('0' + DATEPART(MONTH, Stamp), 2) AS month_group
  ,COUNT(*) AS count
FROM MyTable
GROUP BY
  (DATEPART(YEAR, Stamp) * 100) + RIGHT('0' + DATEPART(MONTH, Stamp), 2)

または、1 期間のみの使用。

SELECT 
  COUNT(*) AS count
FROM MyTable
WHERE Stamp BETWEEN ? AND ?
于 2013-03-18T11:33:09.437 に答える
0
 select user_id,count(userid) cnt from table
 where stamp between to_timestamp('01-01-2013 01:15:27', 'DD-MM-YYYY HH:MI:SS') and
 to_timestamp('03-01-2013 12:15:27', 'DD-MM-YYYY HH:MI:SS') 
 group by user_id
于 2013-03-18T11:38:55.180 に答える