如何限制总列sql中的每一行?

问题描述 投票:0回答:2

我有一个这样的专栏

total  name   gender 
2      Mike   male
2      Dion   male 
2.     Shinta female
2      Sarah  female
10     Pio    male
10     Olive  female
10     Steve  male
80     Yuri   female
80     Kio    male. 
80     Doni   male
80     Dora   female
80     Nobi   male. 
80     Hiou   male

如何将每个总数仅限制为2人?我从创建的View中获取了该表并加入了它,并获得了该表,但如果我限制,它只限制顶部的第一行,但不是每个总数我真的想要每2个人获得总数2,总共10个得到2个人,80个得到2个人,是可能的???

sql database sqlite subquery
2个回答
3
投票

你可以尝试使用row_number()

select * from
(
select *, row_number() over(partition by total order by null) as rn
from tablename
)A where rn<=2

0
投票

窗口函数通常用于此:

select t.*
from (select t.*, row_number() over (partition by total order by total) as seqnum
      from tempview t  -- or whatever your logic is here
     ) t
where seqnum <= 2;

当然,窗口函数仅在最新版本的SQLite中可用。

在旧版本的SQLite中,这很痛苦,但这应该有效:

select t.*
from tempview t
where t.name in (select t2.name
                 from tempview t2
                 where t2.total = t.total
                 limit 2
                );

这假定给定的total不重复名称。

© www.soinside.com 2019 - 2024. All rights reserved.