sql - 基于 MIN 标志聚合行
问题描述
我认为这是一个简单的,但答案是逃避我。
示例:我有一个返回 10 行的查询,其中一些是相同的,除了最后 2 列是注释和数字(语言标志)。我想知道如何始终为这些半相同的行中的每一个返回具有最低语言标志号的行。
我一直假设这个想法是 MIN(language-flag),但是这需要的分组过程使查询仍然返回 2 行,因为评论内容不同。
我创建的示例图像在这里:
任何帮助表示赞赏。
跟进问题:
在混乱中我忘记了为什么我最初需要问这个问题。
如果comments 字段恰好为null,当有相同的COL2 具有更高的lang-flag 时,那应该是选定的行,如果没有更高的lang-flag 行并且comments 字段为null,那么只有空注释应该选择行。
我为此案例创建了另一个示例图像:
解决方案
您可以使用在具有相同 的记录组内对记录rank()
进行排名,然后过滤掉每组的顶部记录:lang_flag
(col1, col2)
select col1, col2, comments, lang_flag
from (
select
t.*,
rank() over(partition by col1, col2 order by lang_flag) rn
from mytable t
) x
where rn = 1
推荐阅读
- optimization - 最小化必须是积极的差异
- vba - 如果“更新前/更新后”的 VBA 处于活动状态,则 Access 女士会在更新或插入数据输入开始后将我锁定在行上
- python - 如何有效地重新排列列表中的字符串字符?(Python)
- javascript - 如何让单独的 html 小部件在动态页面上工作
- python - 如何将号码放在正确的位置
- python - 如何修复“SyntaxError: name 'filename' is used before global declaration”
- amazon-redshift - 如何设计允许我动态查询总操作数、唯一用户数和总用户数的数据仓库模型
- java - 在另一个项目中将没有@SpringBootApplication注释的spring boot作为jar库运行
- python - 如何使输出图像的大小与原始图像的大小相同以计算 CNN 中的损失?
- node.js - 如何将时区设置为 UTC 以在 Windows 上进行赛普拉斯测试?