item value month year
A 0 8 2020
B 0 8 2020
A 0 9 2020
B 13 9 2020
A 0 10 2020
B 0 10 2020
A 10 11 2020
B 0 11 2020
A 0 12 2020
B 0 12 2020
A 0 1 2021
B 10 1 2021
A 0 2 2021
B 0 2 2021
A 0 3 2021
B 0 3 2021
A 11 4 2021
B 0 4 2021
item month year
A 8 2020
A 12 2020
A 1 2021
B 10 2020
B 2 2021
输出规则:对于一个项目,月,年,我们需要寻找下两个月,如果下两个月的总和(值)为0,那么它将符合输出条件。
对于Exapmle:对于A项,2020年8个月,总和(值)为0至2020年10个月。类似地,对于项目A,2020年9个月的总和(值)在接下来的两个月中是ot 0,所以它将不会产出。
对于一个项目,月,年,我们需要寻找下两个月,如果和(值)下两个月是0,那么它将合格的输出。
这听起来像lead()
或使用窗口框架:
select t.*
from (select t.*,
sum(value) over (partition by item order by year, month rows between current row and 2 following) as sum_value_3
from t
) t
where sum_value_3;
这将返回比您指定的更多的行,因为您的描述和所需的结果不相同。您确实希望在一行中有3个或更多0
的一系列行中的第一行。解决这一问题的一种方法是作为一个缺口和岛屿问题:
select item, year, month, cnt
from (select t.*,
count(*) over (partition by item, seqnum - seqnum_1) as cnt,
row_number() over (partition by item, seqnum - seqnum_1 order by year, month) as seqnum_within_group
from (select t.*,
row_number() over (partition by item order by year, month) as seqnum,
row_number() over (partition by item, (case when value = 0 then 1 else 0 end) order by year, month) as seqnum_1
from t
) t
where value = 0
) t
where seqnum_within_group = 1 and cnt >= 3;
问题内容: 我是Java8的新手。我需要根据某些条件(从另一列表中)减去/删除一个列表中的POJO,并将其显示在UI上。 迭代一个列表并搜索条件删除对象将原始列表发送到UI ..主要代码.. 有没有更好的方法来处理循环?任何帮助表示赞赏。 问题答案: 你现在所拥有的代码工作完美,但也因为通过迭代的每一个。改善的一种方法是将每个孩子的存储在中,如果其中包含每个孩子,则将其从中删除:
我有以下数据帧: 我希望获得行ID,其中。 预期收益为。 有什么想法吗?
问题内容: 是否可以将数据从Microsoft Sql Server(以及oracle,mysql等)读取到Spark应用程序中的rdd中?还是我们需要创建一个内存中的集合并将其并行化为RDD? 问题答案: 从邮件列表中找到了解决方案。可以使用JdbcRDD完成此操作。我需要获取MS Sql Server JDBC驱动程序jar并将其添加到项目的lib中。我想使用集成安全性,因此需要将sqljdb
我有以下目录结构: 我想得到以下输出: 我有以下代码(如下),这是低效的,因为它打印出来: 以下是Java代码: 过滤器:
问题内容: 考虑以下两个表 表格1 表2 如何在表2没有表1的ID的情况下从表2将数据插入表1? 换句话说,我想要以下结果: 表2 问题答案: 在你的问题的措辞有点混乱,因为你首先要问 我如何将数据插入 表1 从表2中 但此时你显示了预期的结果 表2 。 现在,如果您想使用table2中不存在的s将table1中的行插入table2中,则可以使用这种方式 这是 SQLFiddle 演示 或者 这是
问题内容: 如果我有一些代码,例如 并且输入文件包含成对的行,我该如何做,以便仅导入每行的第一行?因此,换句话说,每条奇数行都只有?谢谢 问题答案: 您可能想考虑使用来简化奇数行()的过滤。或者在另一种方法中,如果您使用的是JDK7,则可以使用该方法,并在迭代时再次过滤奇数。