在配置单元SQL中使用row_number(),可以通过在where子句中选择1来过滤重复项/选择id的第一个实例,如下所示。我需要的是如何找到每个组中的最后一个实例。
pip install -U pandas
我的要求是,例如,如果ID 1212在表中具有3个实例,而1313在表中具有5个实例,如下所示,我可以使用上述查询,并在where子句中选择1来仅获得一个实例。但是在下面我想要ID 1212为3,ID 1313为5。
select * from
(select c1,c2,c3,c4,c5,id, row_number() over(partition by id ORDER BY id) as seq
from
table) as cnt where seq = 1;
答案 0 :(得分:2)
使用COUNT(*) OVER (PARTITION BY id) AS cnt
添加一个额外的列。这将包含该组中的行数,这也是该组的最大ROW_NUMBER值。
答案 1 :(得分:1)
select id,max(seq) over(partition by id ORDER BY id)from
(select *, row_number() over(partition by id ORDER BY id) as seq
from
table)maxseq
group by id
答案 2 :(得分:1)
使用group by
中的所有这些列,并使用max
上的row_number()
select c1,c2,c3,c4,c5,id,max(r_no)
from
(
select c1,c2,c3,c4,c5,id, row_number() over (partition by id ORDER BY c1,c2,c3,c4,c5,id) as r_no
from
table
) a
group by c1,c2,c3,c4,c5,id
答案 3 :(得分:1)
将升序更改为降序:
select t.*
from (select c1, c2, c3, c4, c5, id,
row_number() over (partition by id ORDER BY id desc) as seqnum
------------------------------------------------------------^
from table
) t
where seqnum = 1;