我有一个表格,其中包含执行交易的列表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
计算每个单独的毫秒而不是整体。
提前致谢
根据您想要进行计数的方式,这样的事情应该可以工作。
对用户 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 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
使用time_to_sec函数获取实际值。
Select count(UserId), UserId from table where time_to_sec(stamp) between
fromTime and toTime
-- fromTime and toTime are interval period
您的问题没有指定您想要的时间段,但这里是一个您可以适应其他时间段的月份示例:
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)
或仅使用一段时间;
SELECT
COUNT(*) AS count
FROM MyTable
WHERE Stamp BETWEEN ? AND ?