我正在尝试处理一些观看狂欢的统计信息,我想找出 最长的狂欢 连胜纪录( 暴跌
是指多个节目以优惠的方式观看,一个又一个,相距不超过2个小时)。数据如下所示:
datetime user_id program
2013-09-01 00:01:18 1 A
2013-09-10 14:03:14 1 B
2013-09-20 17:02:12 2 A
2013-09-21 00:03:22 2 C <-- user 2 binge start
2013-09-21 01:23:22 2 M
2013-09-21 03:03:22 2 E
2013-09-21 04:03:22 2 F
2013-09-21 06:03:22 2 G <-- user 2 binge end
2013-09-21 09:03:22 2 H
2013-09-03 18:21:09 3 D
2013-09-21 09:03:22 2 H
2013-09-24 19:21:00 2 X <-- user 2 second binge start
2013-09-24 20:21:00 2 Y
2013-09-24 21:21:00 2 Z <-- user 2 second binge end
sqlfiddle
在此示例中,用户2持续了6个小时的狂欢,后来又持续了2个小时。
我想要的最终结果是这样的:
user_id binge length
2 1 6 hours
2 2 2 hours
可以直接在数据库中计算吗?
这是识别数据中的序列/条纹的问题。我这样做的首选方式是,
询问:
with start_grp as (
select dt, user_id, programme,
case when dt - lag(dt,1) over (partition by user_id order by dt)
> interval '0 day 2:00:00'
then 1
else 0
end grp_start
from binge
),
assign_grp as (
select dt, user_id, programme,
sum(grp_start) over (partition by user_id order by dt) grp
from start_grp)
select user_id, grp as binge, max(dt) - min(dt) as binge_length
from assign_grp
group by user_id, grp
having count(programme) > 1
在这里,狂欢列可能不会以顺序的方式出现。您可以在最终查询中使用ROW_NUMBER函数进行更正。
演示于 [sqlfiddle](http://sqlfiddle.com/#!12/cb1a2/5)
问题内容: 我希望为每个人计算连续的一天咒语。 我的表: 这是我目前拥有的代码: 产生结果: 在我正在寻找这样的结果集的地方: 我需要计算连续1天以上的连续天数。然后将其作为某人拥有多少个连续咒语的总和。例如,弗雷德在这段时间内连续2次生病。如果某人有星期五和星期一休息,我也需要此内容,这应该算作一个连续的咒语。 我对如何到达那里有些迷失。任何帮助将不胜感激。 请参阅:http ://sqlfid
我无法通过计算引擎连接到数据库。 到目前为止我所做的事情: 设置我的计算引擎 将我的计算引擎连接到我的云SQL 在我的计算引擎上安装并运行Cloud Proxy 在我的libs文件夹中包含JDBC Jar文件 创建了JDBC连接字符串 "jdbc: mysql:///? cloud dSqlInstance= -实现文件树(目录:“libs”,包括:[“*.jar”) -实现“com”。谷歌。云s
问题内容: 我有以下查询: 是否有根据最相关结果进行分类的策略? 问题答案: 当谈论“相关性”时,您确实想要自然语言搜索,这是MySQL全文搜索支持的。语法是比正常的不同 一样 的查询,你需要一个特殊的索引添加到表中,但排序按相关性可能是这样。 这是MySQL计算相关性的方式(来自链接): 如前面的示例所示,在WHERE子句中使用MATCH()时,返回的行将自动按照相关性最高的顺序进行排序。相关性
问题内容: 为什么此查询不起作用? 在此示例中,我尝试在其他计算中使用my_num别名。这导致未知列“ my_num” 这是我正在尝试做的简化版本,但是基本上我想使用别名进行其他计算。我的计算要复杂得多,这就是为什么给它加上别名的原因,因为我以不同的方式重复了几次。 问题答案: 只需将您的重用别名包装为:
问题内容: 假设我在Oracle数据库中有一个表,如下表(table_1)所示,该表跟踪特定个人的服务参与情况: 我的目标是获得一个汇总表,该表针对所有唯一的个人列出是否涉及服务,以及不同的服务事件数量(在这种情况下,帐单为2,可疑为3),其中由几天内中断活动。 要参与 任何 服务,我将使用以下查询 但是,我对如何获得服务参与数感到困惑(2)。在R中使用静态数据帧,您将使用游程长度编码(请参阅我的
问题内容: 我正在寻找一种方法来计算等于组的最小或最大项目数。我每隔几天收到一次商品,每两周输入一次。我需要查看每个EntryDate的最小值和最大值ReceivedDate,以及最小值和最大值处的项目计数。在MS Access中使用SQL。 输入 当前查询 电流输出 期望的输出 问题答案: 我不知道MS Access是否允许这样的子查询。如果这不起作用,请让我知道,我将删除答案。否则: