我想找出某个特定分区连续出现某个特定值的次数,然后显示该分区的较高计数。
例如,如果下表是:
Device ID speed DateTime
--------------------------------------------------
07777778999 34 18-12-2016 17:15
07777778123 15 18-12-2016 18:10
07777778999 34 19-12-2016 19:30
07777778999 34 19-12-2016 12:15
07777778999 20 19-12-2016 13:15
07777778999 20 20-12-2016 11:15
07777778123 15 20-12-2016 9:15
07777778128 44 20-12-2016 17:15
07777778123 15 20-12-2016 17:25
07777778123 12 20-12-2016 17:35
07777778999 34 20-12-2016 17:45
07777778999 34 20-12-2016 17:55
07777778999 34 20-12-2016 18:50
07777778999 34 20-12-2016 18:55
我想知道每个设备连续出现相同速度的最高次数。
因此,如果我按设备ID对它们进行分区,我将获得belo表
Device ID speed DateTime
--------------------------------------------------
07777778999 34 18-12-2016 17:15
07777778999 34 19-12-2016 19:30
07777778999 34 19-12-2016 12:15
07777778999 20 19-12-2016 13:15
07777778999 20 20-12-2016 11:15
07777778999 34 20-12-2016 17:45
07777778999 34 20-12-2016 17:55
07777778999 34 20-12-2016 18:50
07777778999 34 20-12-2016 18:55
07777778123 15 18-12-2016 18:10
07777778123 15 20-12-2016 9:15
07777778123 15 20-12-2016 17:25
07777778123 12 20-12-2016 17:35
07777778128 44 20-12-2016 17:15
-----------------------------------------------------------------
所以我需要的输出是
Device ID speed highcount
--------------------------------------------------
07777778999 34 4
07777778123 15 3
请注意,由于没有连续重复的值,因此未显示07777778128
实现这一目标的可能方法是什么。我能够获得每个设备的所有连续值的计数,但是然后它没有给出最高的计数,而是给出了所有这些连续组的计数
这是一种差距与孤岛的形式。您可以使用不同的行号来获得孤岛:
select device_id, speed, count(*) as num_times
from (select t.*,
row_number() over (partition by device_id order by datetime) as seqnum,
row_number() over (partition by device_id, speed order by datetime) as seqnum_s
from t
) t
group by device_id, speed, (seqnum - seqnum_s);
然后,要获得最大值,请使用另一层窗口函数:
select device_id, speed, num_times
from (select device_id, speed, count(*) as num_times,
row_number() over (partition by device_id order by count(*) desc) as seqnum
from (select t.*,
row_number() over (partition by device_id order by datetime) as seqnum,
row_number() over (partition by device_id, speed order by datetime) as seqnum_s
from t
) t
group by device_id, speed, (seqnum - seqnum_s)
) ds
where seqnum = 1;
问题内容: 表名称调用 上面是一个示例,我需要找出的是如何找到连续无应答计数大于6的数字? 目前,我已经能够获得以下信息,但它不是连续的。 问题答案: 您可以使用变量来执行此操作。 该查询使用4个变量 1)@cur_outcome,它最初设置为空字符串。此后,选择将分配当前行的system_outcome。 2)@prev_outcome,最初设置为空字符串。此后,选择将其设置为@cur_outc
问题内容: 我有一张表,叫他们 我需要和每月的记录。 因为Aria和Brian每月收入只有Belle&Ziya1个,而Chloe每月收入只有2个。因此,在部门BB中,只有1即Aria,而部门CC为0,因为Chloe&Ziya。 这是我的意思是示例输出: 问题答案: 请尝试以下操作: 请在 此处 找到db <> fiddle 。
我需要从这个数组中获取最长的姓氏并返回它。 到目前为止我有这个; 但它给出的输出是“Longly surname should be;Turner,Brendan”,这不是列表中最长的名字。
问题内容: 我有以下SQL: 这将按照我期望的方式对所有null进行计数。但是,我想使用此sql遍历目录中的每个表,例如在 有人可以提供执行此操作所需的sql吗,我对使用游标一无所知。 谢谢 问题答案: 无需游标。只需将您设置为 然后从此更改您的条款 到 所以整个代码…
我被困在一个问题上,希望得到一些指导。我们希望生成一个报告,计算产品的连续日期(从用户提供的日期向后看)。数据集如下: 因此,我们想得出一份报告,该报告在2021年3月2日提供的日期如下所示: 尽管我正在努力编写查询,但我甚至不知道该怎么称呼它,因为我需要一个特定阈值上的连续值计数。我可以计算阈值以上的值,但不确定如何添加“连续数周”逻辑。
问题内容: 假设我的SQL Server 2012数据库中有下表: MyTable: 我想获取特定扇区的每个扇区的平均值, 但要基于FkId的总数中可用的日期总数 。也就是说,如果我想获得的平均= 1的日期,也就是说,和我的结果集将是: 换句话说,不除以该部门可用的日期数,而是除以该表中该日期范围的日期总数。 我认为可以通过以下方式对CTE进行此操作: 但我真的希望有更好的方法。有什么想法吗? 问