Sql 选择包含其他group by列的group的第一行
假设我有一个包含以下结果的表: 我怎么可能选择只需要具有object0\u行为最小结果的不同父\u ID 预期产出:Sql 选择包含其他group by列的group的第一行,sql,Sql,假设我有一个包含以下结果的表: 我怎么可能选择只需要具有object0\u行为最小结果的不同父\u ID 预期产出: parent_id | id | object0_behaviour | type ------------------------------------------ 1 | 1 | 5 | IP 2 | 3 | 5 | IP 3 | 5 | 7
parent_id | id | object0_behaviour | type
------------------------------------------
1 | 1 | 5 | IP
2 | 3 | 5 | IP
3 | 5 | 7 | ID
4 | 6 | 7 | ID
5 | 8 | 5 | IP
6 | 18 | 7 | ID
7 | 10 | 7 | ID
8 | 9 | 5 | IP
我试过:
SELECT parent_id, min(object0_behaviour) FROM table GROUP BY parent_id
它可以工作,但是如果我想要另外两个列,我需要添加到GROUPBY子句中,然后返回到第一步
我看到了R的例子:
类似于我需要的输出,但我似乎无法将其转换为SQL您可以尝试使用行数窗口函数
select * from table
join (
SELECT parent_id, min(object0_behaviour) object0_behaviour
FROM table GROUP BY parent_id
) grouped
on grouped.parent_id = table.parent_id
and grouped.object0_behaviour = table.object0_behaviour
select * from
(
select *, row_number() over(partition by parent_id order by object0_behaviour) as rn
from tablename
)A where rn=1
您可以尝试使用行数窗口功能
select * from
(
select *, row_number() over(partition by parent_id order by object0_behaviour) as rn
from tablename
)A where rn=1
用你正在使用的数据库标记你的问题。用你正在使用的数据库标记你的问题。