sql - 按数据分组,同一组多次出现
问题描述
输入数据
标识组
1个
1个
1个
1个
1个
1个
1个
预期结果
id 组 row_number
1 a 1
1 a 1
1 b 2
1 b 2
1 a 4
1 a 4
1 a 4
我需要基于上述结果的 rwo_number。如果第二次发生的同一组会为此生成不同的row_number?我还有一个自上而下的日期列序列。
解决方案
这是差距和孤岛问题的一个例子。但是,解决它需要对数据进行排序——而 SQL 表表示无序集。
让我假设你有这样一个专栏。然后可以使用行号的差异:
select t.*,
dense_rank() over (partition by id order by grp, (seqnum - seqnum_g)) as grouping
from (select t.*,
row_number() over (partition by id order by ?) as seqnum,
row_number() over (partition by id, grp order by ?) as seqnum_g
from t
) t;
这不会产生您特别要求的值,但会识别每个组。
推荐阅读
- dependency-injection - Spring 对“控制反转”的定义与维基百科的定义——为什么 DI 是 IoC 的一种形式(就控制流而言)?
- eslint - 无法让 eslint-plugin-css-modules 工作。一直抱怨我对 :local(.className) 的使用
- python - 带有 Keras 数据集错误的 Python,“未定义 X”
- android - 同步错误:com.google.android.gms:play-services-base:17.2.0
- excel - 使用 Find 方法从不同的工作表中查找命名范围内变量日期的列值
- sql - 如何在一个结果列中写入不同的数据类型
- powershell - 有没有办法在两小时后停止 Azure 虚拟机?
- java - 使用Springframework Page对象时不将具有复合主键的实体的路径暴露给前端
- javascript - 将 ts sass 转换为 js 中的内联 css
- python - 将下拉值传递给 Django 中的 URL