![]() |
1
9
只要做:
获得 最后的 非空值切换顺序:
|
![]() |
2
5
对于那些需要在特定时间内这样做的人 大容量 ,这将成为一个问题和密集的,因为它可以转化为后端上的大量单个表点击。 我有一个使用窗口函数的解决方案,可以解决大数据/分区的问题。
对于每个GroupID值
如果我将前1个逻辑应用于缩放,并且我有很多行,那么它将返回以执行大量的单个表查询。然而,如果我使用窗口函数,我可以让它评估内存中的数据,以更有效地获取数据,尤其是在需要分区和大量数据时。 以下是解决方案:
解释-第一个_值在每个不同的GroupID内求值(因为我们按GroupID设置分区)。在该窗口中,它计算该GroupID的行中具有非空值的情况,然后按ID排序(升序或降序)。 由于它是一个窗口函数,这将值放在原始粒度的记录级别上,因此我们还添加了一个稠密的_秩来进行秩,并使我们能够在外部查询中,将每个GroupID降到一行。 p、 如果您想自己运行它,请在查询中包含以下内容,以将所需的样本数据生成到CTE中的“MY_表”中。
|
![]() |
3
1
|
![]() |
4
-4
|
|
Johnny T · 基于当前值的SQL合并表[重复] 4 月前 |
![]() |
John D · 需要为NULL或NOT NULL的WHERE子句 5 月前 |
![]() |
ojek · 如何对SQL结果进行分组和编号? 5 月前 |
![]() |
senek · 如何在PL/SQL中将选择结果(列)放入数组中 5 月前 |
![]() |
Sax · 规范化Google表格(第一步) 5 月前 |
![]() |
Jatin · 检索卷计数的动态sql抛出错误语法错误[关闭] 5 月前 |
![]() |
Andrus · 如何在sql中查找第二个匹配项 5 月前 |