sql - 识别分区后具有不同值的记录
问题描述
我正在尝试识别基于导入编号和部件编号分区的记录,但仅选择分类列在此分区中具有不同值的位置。
在下面的示例中,前 4 行具有不同的类,因此我只想选择这些记录。最后两行具有相同的类,因此应将它们过滤掉。
进口编号 | 零件编号 | 班级 |
---|---|---|
1AU6006 | ET7109 | 我们 |
1AU6006 | ET7109 | GEN |
1AU6007 | ET7110 | 我们 |
1AU6007 | ET7110 | GEN |
1AU6512 | ET7115 | 我们 |
1AU6512 | ET7115 | 我们 |
我不确定如何弄清楚这个逻辑,所以我没有任何起始代码。
解决方案
您可以对分区列使用分析计数:
select import_no, part_no, class,
count(distinct class) over (partition by import_no, part_no) as class_count
from your_table;
IMPORT_NO PART_NO CLASS CLASS_COUNT
--------- ------- ----- -----------
1AU6006 ET7109 GEN 2
1AU6006 ET7109 US 2
1AU6007 ET7110 GEN 2
1AU6007 ET7110 US 2
1AU6512 ET7115 US 1
1AU6512 ET7115 US 1
然后在子查询或 CTE 中使用它来过滤掉该计数仅为 1 的行:
select import_no, part_no, class
from (
select import_no, part_no, class,
count(distinct class) over (partition by import_no, part_no) as class_count
from your_table
)
where class_count > 1;
IMPORT_NO PART_NO CLASS
--------- ------- -----
1AU6006 ET7109 GEN
1AU6006 ET7109 US
1AU6007 ET7110 GEN
1AU6007 ET7110 US
推荐阅读
- logstash - 时间间隔。秒与毫秒图
- r - 使用 dplyr 按数字类别提取摘要统计信息
- python - 当我使用 XGBOOST 回归时,max_depth 的不同值只能得到负分
- c# - 如何使用相同的 xaml 文件在弹出窗口中显示不同的名称?
- javascript - 控制台日志数组项不知道数组长度
- r - 如何将R中的excel数据更改为缺席数据?
- sapui5 - 该列是 HANA 计算视图中的代理列或不一致的列
- google-apps-script - 为什么从移动设备触发时我的触发状态为“已暂停”
- java - 为什么无法始终检测到我的 JAR 源文件?
- android-studio - TextInputLayout 无法添加样式