sql - 需要从sql中的每个组中选择1行
问题描述
我正在尝试执行此查询。这就是我所拥有的。
我的表是:表
QId InternalId type. priority userid
100 100 1 0 X101
100 100 1 1 X102
100 100 2 0 X103
100 100 2 0 X104
100 100 2 0 X105
100 100 3 0 X106
100 100 3 0 X107
101 101 2 1 X114
101 101 2 0 X115
101 101 3 0 X116
101 101 3 0 X117
对于 QId 和 InternalId,我们有类型 1,2,3。对于每个基于组的类型,我需要 1 行。这里的条件是如果优先级为 1,那么我们需要获取该记录。如果没有设置优先级需要先记录。
我需要如下表的结果
QId InternalId type. priority userid
100 100 1 1 X102
100 100 2 0 X103
100 100 3 0 x106
101 101 2 1 X114
101 101 3 0 X116
你能帮我解决这个问题吗
解决方案
只需使用row_number()
:
select t.*
from (select t.*,
row_number() over (partition by QId, InternalId, type order by (select null)) as seqnum
from t
) t
where seqnum = 1;
推荐阅读
- python - Elasticsearch 搜索 API 未返回所有结果
- c# - 没有刷新.net核心mvc的发布表单
- php - 我如何将 bindingValues 与数组名称 PDO PHP 结合起来
- javascript - 在 React hooks 状态下循环遍历 json 数据
- python - 如何获取列表中字符串的公共前缀
- assembly - 从汇编代码中检查可能的危险
- r - 相当于R中的对比度(Stata)
- java - Android 将大整数转换为科学记数法
- r - rmarkdown 和 pandoc 参考问题
- css - Next.js 样式 - 页脚组件由于某种原因不在屏幕底部?