我需要回答这样一个问题中计算出的任意N型秒持续的SQL MAX():如何在一定的时间内
对于每个用户,什么是大部分项目那用户在
START_TIMESTAMP
与END_TIMESTAMP
之间的任何60秒 时间范围内查看?
60秒的时间范围是一个滑动窗口。这不仅仅是每个整个分钟的“物品查看次数”问题。另外,60秒只是一个例子,它应该可以在任何秒数内工作。
我的数据存储这样的:
-- Timestamped log of users viewing items
CREATE TABLE user_item_views (
user_id integer,
item_id integer,
timestamp timestamp
);
做它的每个整分钟是很容易的,只是格式时间戳像YYYY-MM-DD hh:mm
做由格式化的日期和时间以及USER_ID分组计数。
这样做的滑动窗口,我不知道如何处理。
如果这在SQL以外更容易,我很乐意将数据导出到另一种格式或使用其他语言。
所需的输出是一样的东西:
User ID Max items viewed in N seconds, between START and END.
... ...
... ...
... ...
我怎样才能做到这一点?
什么DBMS是什么? MSSQL Oracle MySQL? – JoshBerke 2012-01-18 16:31:55
@JoshBerke我可以使用任何开放源代码并且最好易于访问。如果另一种工具更适合,它不一定是RDBMS。对于RDBMS,按照最优选到最不优选的顺序:sqlite3,PostgreSQL或MySQL。 – Rebe 2012-01-18 16:35:58
@Rebe我真的很感激某种反馈,无论我的想法是否奏效。另外,我很乐意看到您最终使用的代码! – Tomalak 2012-01-18 18:56:01