トランザクションが実行されるuserids
日時のリストを含むテーブルがあります。stamp
次のようになります。
UserId | Stamp
John11| 01/01/2013 01:15:27
各ユーザーが行ったトランザクションの期間を示すクエリを返したいと思います。
私は試してみましたcount
が、時間の部分が原因stamp
で、全体ではなく個々のミリ秒がカウントされます。
前もって感謝します
トランザクションが実行されるuserids
日時のリストを含むテーブルがあります。stamp
次のようになります。
UserId | Stamp
John11| 01/01/2013 01:15:27
各ユーザーが行ったトランザクションの期間を示すクエリを返したいと思います。
私は試してみましたcount
が、時間の部分が原因stamp
で、全体ではなく個々のミリ秒がカウントされます。
前もって感謝します
実際の値を取得するには、 time_to_sec関数を使用します。
Select count(UserId), UserId from table where time_to_sec(stamp) between
fromTime and toTime
-- fromTime and toTime are interval period
カウントをどのように行いたいかによって、このようなものが機能するはずです。
ユーザー 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
あなたの質問はあなたが望む期間を指定していませんが、他の期間に適応できる月の例を次に示します:
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 ?
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