0

我有一个表格,其中包含执行交易的列表userids和日期stamp时间。它如下所示:

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

我想返回一个查询,显示一段时间内每个用户完成了多少交易。

我已经尝试过,count但由于它的时间部分stamp计算每个单独的毫秒而不是整体。

提前致谢

4

4 回答 4

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 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 回答
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

您的问题没有指定您想要的时间段,但这里是一个您可以适应其他时间段的月份示例:

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 ?
于 2013-03-18T11:33:09.437 回答